cregit-Linux how code gets into the kernel

Release 4.11 fs/proc/consoles.c

Directory: fs/proc
/*
 * Copyright (c) 2010 Werner Fink, Jiri Slaby
 *
 * Licensed under GPLv2
 */

#include <linux/console.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/tty_driver.h>

/*
 * This is handler for /proc/consoles
 */

static int show_console_dev(struct seq_file *m, void *v) { static const struct { short flag; char name; } con_flags[] = { { CON_ENABLED, 'E' }, { CON_CONSDEV, 'C' }, { CON_BOOT, 'B' }, { CON_PRINTBUFFER, 'p' }, { CON_BRL, 'b' }, { CON_ANYTIME, 'a' }, }; char flags[ARRAY_SIZE(con_flags) + 1]; struct console *con = v; unsigned int a; dev_t dev = 0; if (con->device) { const struct tty_driver *driver; int index; driver = con->device(con, &index); if (driver) { dev = MKDEV(driver->major, driver->minor_start); dev += index; } } for (a = 0; a < ARRAY_SIZE(con_flags); a++) flags[a] = (con->flags & con_flags[a].flag) ? con_flags[a].name : ' '; flags[a] = 0; seq_setwidth(m, 21 - 1); seq_printf(m, "%s%d", con->name, con->index); seq_pad(m, ' '); seq_printf(m, "%c%c%c (%s)", con->read ? 'R' : '-', con->write ? 'W' : '-', con->unblank ? 'U' : '-', flags); if (dev) seq_printf(m, " %4d:%d", MAJOR(dev), MINOR(dev)); seq_printf(m, "\n"); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Jiri Slaby27494.16%150.00%
Tetsuo Handa175.84%150.00%
Total291100.00%2100.00%


static void *c_start(struct seq_file *m, loff_t *pos) { struct console *con; loff_t off = 0; console_lock(); for_each_console(con) if (off++ == *pos) break; return con; }

Contributors

PersonTokensPropCommitsCommitProp
Jiri Slaby4497.78%150.00%
Torben Hohn12.22%150.00%
Total45100.00%2100.00%


static void *c_next(struct seq_file *m, void *v, loff_t *pos) { struct console *con = v; ++*pos; return con->next; }

Contributors

PersonTokensPropCommitsCommitProp
Jiri Slaby36100.00%1100.00%
Total36100.00%1100.00%


static void c_stop(struct seq_file *m, void *v) { console_unlock(); }

Contributors

PersonTokensPropCommitsCommitProp
Jiri Slaby1794.44%150.00%
Torben Hohn15.56%150.00%
Total18100.00%2100.00%

static const struct seq_operations consoles_op = { .start = c_start, .next = c_next, .stop = c_stop, .show = show_console_dev };
static int consoles_open(struct inode *inode, struct file *file) { return seq_open(file, &consoles_op); }

Contributors

PersonTokensPropCommitsCommitProp
Jiri Slaby25100.00%1100.00%
Total25100.00%1100.00%

static const struct file_operations proc_consoles_operations = { .open = consoles_open, .read = seq_read, .llseek = seq_lseek, .release = seq_release, };
static int __init proc_consoles_init(void) { proc_create("consoles", 0, NULL, &proc_consoles_operations); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Jiri Slaby2291.67%150.00%
Alexey Dobriyan28.33%150.00%
Total24100.00%2100.00%

fs_initcall(proc_consoles_init);

Overall Contributors

PersonTokensPropCommitsCommitProp
Jiri Slaby49495.55%120.00%
Tetsuo Handa173.29%120.00%
Alexey Dobriyan30.58%120.00%
Torben Hohn20.39%120.00%
Paul Gortmaker10.19%120.00%
Total517100.00%5100.00%
Directory: fs/proc
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.