static int devices_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data) { int len = get_chrdev_list(page); len += get_blkdev_list(page+len, len); return proc_calc_metrics(page, start, off, count, eof, len); }
int get_device_list(char * page) { int i; int len; len = sprintf(page, "Character devices:\n"); read_lock(&chrdevs_lock); #ifdef CONFIG_DPM_NONPREEMPT dpm_set_os(DPM_NONPREEMPT_STATE); #endif for (i = 0; i < MAX_CHRDEV ; i++) { if (chrdevs[i].fops) { len += sprintf(page+len, "%3d %s\n", i, chrdevs[i].name); } } #ifdef CONFIG_DPM_NONPREEMPT dpm_set_os(current->dpm_state); #endif read_unlock(&chrdevs_lock); len += get_blkdev_list(page+len); return len; }