in interface.c [208:245]
static ssize_t options_show(struct device *dmdev, struct device_attribute *attr,
char *buf)
{
struct pnp_dev *dev = to_pnp_dev(dmdev);
pnp_info_buffer_t *buffer;
struct pnp_option *option;
int ret, dep = 0, set = 0;
char *indent;
buffer = kzalloc(sizeof(*buffer), GFP_KERNEL);
if (!buffer)
return -ENOMEM;
buffer->len = PAGE_SIZE;
buffer->buffer = buf;
buffer->curr = buffer->buffer;
list_for_each_entry(option, &dev->options, list) {
if (pnp_option_is_dependent(option)) {
indent = " ";
if (!dep || pnp_option_set(option) != set) {
set = pnp_option_set(option);
dep = 1;
pnp_printf(buffer, "Dependent: %02i - "
"Priority %s\n", set,
pnp_option_priority_name(option));
}
} else {
dep = 0;
indent = "";
}
pnp_print_option(buffer, indent, option);
}
ret = (buffer->curr - buf);
kfree(buffer);
return ret;
}