mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
Add new command-line option --ipldev. When specified and IPL was done from a supported device type, the IPL device is selected for the requested tool operation. Example to list IPL device information: $ lszdev --ipldev Example to create a persistent configuration for the IPL device: $ chzdev --enable --persistent --ipldev Reviewed-by: Vineeth Vijayan <vneethv@linux.ibm.com> Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
90 lines
2.8 KiB
C
90 lines
2.8 KiB
C
/*
|
|
* zdev - Modify and display the persistent configuration of devices
|
|
*
|
|
* Copyright IBM Corp. 2016, 2017
|
|
*
|
|
* s390-tools is free software; you can redistribute it and/or modify
|
|
* it under the terms of the MIT license. See LICENSE for details.
|
|
*/
|
|
|
|
#ifndef SELECT_H
|
|
#define SELECT_H
|
|
|
|
#include "lib/util_list.h"
|
|
|
|
#include "exit_code.h"
|
|
#include "misc.h"
|
|
|
|
struct device;
|
|
struct devtype;
|
|
struct subtype;
|
|
struct devnode;
|
|
|
|
struct select_opts {
|
|
struct devtype *devtype;
|
|
struct subtype *subtype;
|
|
unsigned int all:1;
|
|
unsigned int configured:1;
|
|
unsigned int existing:1;
|
|
unsigned int online:1;
|
|
unsigned int offline:1;
|
|
unsigned int failed:1;
|
|
unsigned int ipldev:1;
|
|
struct util_list devids; /* List of struct strlist_node */
|
|
struct util_list by_path; /* List of struct strlist_node */
|
|
struct util_list by_node; /* List of struct strlist_node */
|
|
struct util_list by_if; /* List of struct strlist_node */
|
|
struct util_list by_attr; /* List of struct strlist_node */
|
|
};
|
|
|
|
/** selected_dev_node - Represents a selected device ID
|
|
* dt: Devtype of selected device
|
|
* st: Subtype of selected device
|
|
* id: ID if selected device
|
|
* param: Command line parameter that resulted in device selection
|
|
* rc: Per-device selection exit code (%EXIT_OK if all went well)
|
|
*/
|
|
struct selected_dev_node {
|
|
struct util_list_node node;
|
|
struct devtype *dt;
|
|
struct subtype *st;
|
|
char *id;
|
|
char *param;
|
|
exit_code_t rc;
|
|
};
|
|
|
|
struct select_opts *select_opts_new(void);
|
|
void select_opts_free(struct select_opts *);
|
|
bool select_opts_dev_specified(struct select_opts *);
|
|
|
|
struct util_list *selected_dev_list_new(void);
|
|
void selected_dev_free(struct selected_dev_node *);
|
|
void selected_dev_list_free(struct util_list *);
|
|
struct selected_dev_node *selected_dev_list_add(struct util_list *,
|
|
struct devtype *,
|
|
struct subtype *, const char *,
|
|
const char *, exit_code_t);
|
|
void selected_dev_print(struct selected_dev_node *, int);
|
|
|
|
exit_code_t select_devices(struct select_opts *, struct util_list *, int, int,
|
|
int, config_t, read_scope_t, err_t);
|
|
|
|
exit_code_t select_by_devnode(struct select_opts *, struct util_list *,
|
|
config_t, read_scope_t, struct devtype *,
|
|
struct subtype *, struct devnode *, const char *,
|
|
err_t);
|
|
exit_code_t select_by_node(struct select_opts *, struct util_list *,
|
|
config_t, read_scope_t, struct devtype *,
|
|
struct subtype *, const char *, err_t err);
|
|
exit_code_t select_by_path(struct select_opts *, struct util_list *, config_t,
|
|
read_scope_t, struct devtype *, struct subtype *,
|
|
const char *, err_t);
|
|
exit_code_t select_by_interface(struct select_opts *, struct util_list *,
|
|
config_t, read_scope_t, struct devtype *,
|
|
struct subtype *, const char *, err_t);
|
|
|
|
bool select_match_state(struct device *, struct select_opts *);
|
|
void selected_dev_list_print(struct util_list *, int);
|
|
|
|
#endif /* SELECT_H */
|