cregit-Linux how code gets into the kernel

Release 4.14 arch/um/kernel/exitcode.c

Directory: arch/um/kernel
/*
 * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
 * Licensed under the GPL
 */

#include <linux/ctype.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/types.h>
#include <linux/uaccess.h>

/*
 * If read and write race, the read will still atomically read a valid
 * value.
 */

int uml_exitcode = 0;


static int exitcode_proc_show(struct seq_file *m, void *v) { int val; /* * Save uml_exitcode in a local so that we don't need to guarantee * that sprintf accesses it atomically. */ val = uml_exitcode; seq_printf(m, "%d\n", val); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Jeff Dike2777.14%375.00%
Alexey Dobriyan822.86%125.00%
Total35100.00%4100.00%


static int exitcode_proc_open(struct inode *inode, struct file *file) { return single_open(file, exitcode_proc_show, NULL); }

Contributors

PersonTokensPropCommitsCommitProp
Alexey Dobriyan2492.31%150.00%
Jeff Dike27.69%150.00%
Total26100.00%2100.00%


static ssize_t exitcode_proc_write(struct file *file, const char __user *buffer, size_t count, loff_t *pos) { char *end, buf[sizeof("nnnnn\0")]; size_t size; int tmp; size = min(count, sizeof(buf)); if (copy_from_user(buf, buffer, size)) return -EFAULT; tmp = simple_strtol(buf, &end, 0); if ((*end != '\0') && !isspace(*end)) return -EINVAL; uml_exitcode = tmp; return count; }

Contributors

PersonTokensPropCommitsCommitProp
Jeff Dike8679.63%250.00%
Dan Carpenter1614.81%125.00%
Alexey Dobriyan65.56%125.00%
Total108100.00%4100.00%

static const struct file_operations exitcode_proc_fops = { .owner = THIS_MODULE, .open = exitcode_proc_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, .write = exitcode_proc_write, };
static int make_proc_exitcode(void) { struct proc_dir_entry *ent; ent = proc_create("exitcode", 0600, NULL, &exitcode_proc_fops); if (ent == NULL) { printk(KERN_WARNING "make_proc_exitcode : Failed to register " "/proc/exitcode\n"); return 0; } return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Jeff Dike4287.50%240.00%
Alexey Dobriyan510.42%240.00%
Christophe Lucas12.08%120.00%
Total48100.00%5100.00%

__initcall(make_proc_exitcode);

Overall Contributors

PersonTokensPropCommitsCommitProp
Jeff Dike18663.92%654.55%
Alexey Dobriyan8729.90%218.18%
Dan Carpenter165.50%19.09%
Christophe Lucas10.34%19.09%
Linus Torvalds10.34%19.09%
Total291100.00%11100.00%
Directory: arch/um/kernel
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.