Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  *  linux/fs/proc/kmsg.c
  3  *
  4  *  Copyright (C) 1992  by Linus Torvalds
  5  *
  6  */
  7 
  8 #include <linux/types.h>
  9 #include <linux/errno.h>
 10 #include <linux/time.h>
 11 #include <linux/kernel.h>
 12 #include <linux/poll.h>
 13 #include <linux/fs.h>
 14 
 15 #include <asm/uaccess.h>
 16 #include <asm/io.h>
 17 
 18 extern wait_queue_head_t log_wait;
 19 
 20 extern int do_syslog(int type, char __user *bug, int count);
 21 
 22 static int kmsg_open(struct inode * inode, struct file * file)
 23 {
 24         return do_syslog(1,NULL,0);
 25 }
 26 
 27 static int kmsg_release(struct inode * inode, struct file * file)
 28 {
 29         (void) do_syslog(0,NULL,0);
 30         return 0;
 31 }
 32 
 33 static ssize_t kmsg_read(struct file *file, char __user *buf,
 34                          size_t count, loff_t *ppos)
 35 {
 36         if ((file->f_flags & O_NONBLOCK) && !do_syslog(9, NULL, 0))
 37                 return -EAGAIN;
 38         return do_syslog(2, buf, count);
 39 }
 40 
 41 static unsigned int kmsg_poll(struct file *file, poll_table *wait)
 42 {
 43         poll_wait(file, &log_wait, wait);
 44         if (do_syslog(9, NULL, 0))
 45                 return POLLIN | POLLRDNORM;
 46         return 0;
 47 }
 48 
 49 
 50 const struct file_operations proc_kmsg_operations = {
 51         .read           = kmsg_read,
 52         .poll           = kmsg_poll,
 53         .open           = kmsg_open,
 54         .release        = kmsg_release,
 55 };
 56 
  This page was automatically generated by the LXR engine.