]>
git.ipfire.org Git - thirdparty/util-linux.git/blob - include/sysfs.h
2 * No copyright is claimed. This code is in the public domain; do with
5 * Copyright (C) 2011 Karel Zak <kzak@redhat.com>
7 #ifndef UTIL_LINUX_SYSFS_H
8 #define UTIL_LINUX_SYSFS_H
15 #include <sys/types.h>
25 * sysfs_devname_sys_to_dev:
26 * @name: devname to be converted in place
28 * Linux kernel linux/drivers/base/core.c: device_get_devnode()
29 * defines a replacement of '!' in the /sys device name by '/' in the
30 * /dev device name. This helper replaces all occurrences of '!' in
31 * @name by '/' to convert from /sys to /dev.
33 static inline void sysfs_devname_sys_to_dev(char *name
)
38 while ((c
= strchr(name
, '!')))
43 * sysfs_devname_dev_to_sys:
44 * @name: devname to be converted in place
46 * See sysfs_devname_sys_to_dev().
48 static inline void sysfs_devname_dev_to_sys(char *name
)
53 while ((c
= strchr(name
, '/')))
59 struct path_cxt
*parent
;
61 unsigned int scsi_host
,
66 unsigned int has_hctl
: 1,
70 void ul_sysfs_init_debug(void);
72 struct path_cxt
*ul_new_sysfs_path(dev_t devno
, struct path_cxt
*parent
, const char *prefix
);
73 int sysfs_blkdev_init_path(struct path_cxt
*pc
, dev_t devno
, struct path_cxt
*parent
);
75 int sysfs_blkdev_set_parent(struct path_cxt
*pc
, struct path_cxt
*parent
);
76 struct path_cxt
*sysfs_blkdev_get_parent(struct path_cxt
*pc
);
78 char *sysfs_blkdev_get_name(struct path_cxt
*pc
, char *buf
, size_t bufsiz
);
79 int sysfs_blkdev_is_partition_dirent(DIR *dir
, struct dirent
*d
, const char *parent_name
);
80 int sysfs_blkdev_count_partitions(struct path_cxt
*pc
, const char *devname
);
81 dev_t
sysfs_blkdev_partno_to_devno(struct path_cxt
*pc
, int partno
);
82 char *sysfs_blkdev_get_slave(struct path_cxt
*pc
);
83 char *sysfs_blkdev_get_path(struct path_cxt
*pc
, char *buf
, size_t bufsiz
);
84 dev_t
sysfs_blkdev_get_devno(struct path_cxt
*pc
);
86 char *sysfs_blkdev_get_devchain(struct path_cxt
*pc
, char *buf
, size_t bufsz
);
87 int sysfs_blkdev_next_subsystem(struct path_cxt
*pc
__attribute__((unused
)), char *devchain
, char **subsys
);
89 int sysfs_blkdev_is_hotpluggable(struct path_cxt
*pc
);
90 int sysfs_blkdev_is_removable(struct path_cxt
*pc
);
91 int sysfs_blkdev_get_wholedisk( struct path_cxt
*pc
,
96 int sysfs_devno_to_wholedisk(dev_t dev
, char *diskname
,
97 size_t len
, dev_t
*diskdevno
);
98 int sysfs_devno_is_dm_private(dev_t devno
, char **uuid
);
99 int sysfs_devno_is_wholedisk(dev_t devno
);
101 dev_t
sysfs_devname_to_devno(const char *name
);
102 dev_t
__sysfs_devname_to_devno(const char *prefix
, const char *name
, const char *parent
);
103 int sysfs_devname_is_hidden(const char *prefix
, const char *name
);
105 char *sysfs_devno_to_devpath(dev_t devno
, char *buf
, size_t bufsiz
);
106 char *sysfs_devno_to_devname(dev_t devno
, char *buf
, size_t bufsiz
);
107 int sysfs_devno_count_partitions(dev_t devno
);
109 int sysfs_blkdev_scsi_get_hctl(struct path_cxt
*pc
, int *h
, int *c
, int *t
, int *l
);
110 char *sysfs_blkdev_scsi_host_strdup_attribute(struct path_cxt
*pc
,
111 const char *type
, const char *attr
);
112 int sysfs_blkdev_scsi_host_is(struct path_cxt
*pc
, const char *type
);
113 int sysfs_blkdev_scsi_has_attribute(struct path_cxt
*pc
, const char *attr
);
114 int sysfs_blkdev_scsi_path_contains(struct path_cxt
*pc
, const char *pattern
);
116 char *sysfs_chrdev_devno_to_devname(dev_t devno
, char *buf
, size_t bufsiz
);
118 enum sysfs_byteorder
{
119 SYSFS_BYTEORDER_LITTLE
,
123 extern enum sysfs_byteorder
sysfs_get_byteorder(struct path_cxt
*pc
);
124 extern int sysfs_get_address_bits(struct path_cxt
*pc
);
126 #endif /* UTIL_LINUX_SYSFS_H */