mirror of
https://github.com/torvalds/linux.git
synced 2026-10-11 12:58:02 +02:00
s390/cio: add helper to query utility strings per given ccw device
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
1c21765cb3
commit
199652309a
|
|
@ -231,4 +231,5 @@ int ccw_device_siosl(struct ccw_device *);
|
||||||
extern void ccw_device_get_schid(struct ccw_device *, struct subchannel_id *);
|
extern void ccw_device_get_schid(struct ccw_device *, struct subchannel_id *);
|
||||||
|
|
||||||
struct channel_path_desc_fmt0 *ccw_device_get_chp_desc(struct ccw_device *, int);
|
struct channel_path_desc_fmt0 *ccw_device_get_chp_desc(struct ccw_device *, int);
|
||||||
|
u8 *ccw_device_get_util_str(struct ccw_device *cdev, int chp_idx);
|
||||||
#endif /* _S390_CCWDEV_H_ */
|
#endif /* _S390_CCWDEV_H_ */
|
||||||
|
|
|
||||||
|
|
@ -472,6 +472,36 @@ struct channel_path_desc_fmt0 *ccw_device_get_chp_desc(struct ccw_device *cdev,
|
||||||
return chp_get_chp_desc(chpid);
|
return chp_get_chp_desc(chpid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ccw_device_get_util_str() - return newly allocated utility strings
|
||||||
|
* @cdev: device to obtain the utility strings for
|
||||||
|
* @chp_idx: index of the channel path
|
||||||
|
*
|
||||||
|
* On success return a newly allocated copy of the utility strings
|
||||||
|
* associated with the given channel path. Return %NULL on error.
|
||||||
|
*/
|
||||||
|
u8 *ccw_device_get_util_str(struct ccw_device *cdev, int chp_idx)
|
||||||
|
{
|
||||||
|
struct subchannel *sch = to_subchannel(cdev->dev.parent);
|
||||||
|
struct channel_path *chp;
|
||||||
|
struct chp_id chpid;
|
||||||
|
u8 *util_str;
|
||||||
|
|
||||||
|
chp_id_init(&chpid);
|
||||||
|
chpid.id = sch->schib.pmcw.chpid[chp_idx];
|
||||||
|
chp = chpid_to_chp(chpid);
|
||||||
|
|
||||||
|
util_str = kmalloc(sizeof(chp->desc_fmt3.util_str), GFP_KERNEL);
|
||||||
|
if (!util_str)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
mutex_lock(&chp->lock);
|
||||||
|
memcpy(util_str, chp->desc_fmt3.util_str, sizeof(chp->desc_fmt3.util_str));
|
||||||
|
mutex_unlock(&chp->lock);
|
||||||
|
|
||||||
|
return util_str;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ccw_device_get_id() - obtain a ccw device id
|
* ccw_device_get_id() - obtain a ccw device id
|
||||||
* @cdev: device to obtain the id for
|
* @cdev: device to obtain the id for
|
||||||
|
|
@ -682,3 +712,4 @@ EXPORT_SYMBOL(ccw_device_start_key);
|
||||||
EXPORT_SYMBOL(ccw_device_get_ciw);
|
EXPORT_SYMBOL(ccw_device_get_ciw);
|
||||||
EXPORT_SYMBOL(ccw_device_get_path_mask);
|
EXPORT_SYMBOL(ccw_device_get_path_mask);
|
||||||
EXPORT_SYMBOL_GPL(ccw_device_get_chp_desc);
|
EXPORT_SYMBOL_GPL(ccw_device_get_chp_desc);
|
||||||
|
EXPORT_SYMBOL_GPL(ccw_device_get_util_str);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user