1/* 2 * linux/fs/proc/kmsg2.c 3 * 4 * Copyright (C) 2008 5 * 6 */ 7 8#include <linux/types.h> 9#include <linux/errno.h> 10#include <linux/sched.h> 11#include <linux/kernel.h> 12#include <linux/poll.h> 13 14#include <asm/uaccess.h> 15#include <asm/io.h> 16 17extern wait_queue_head_t log_wait2; 18 19extern int do_syslog2(int type, char * bug, int count); 20 21static int kmsg_open(struct inode * inode, struct file * file) 22{ 23 return do_syslog2(1,NULL,0); 24} 25 26static int kmsg_release(struct inode * inode, struct file * file) 27{ 28 (void) do_syslog2(0,NULL,0); 29 return 0; 30} 31 32static ssize_t kmsg_read(struct file * file, char * buf, 33 size_t count, loff_t *ppos) 34{ 35 return do_syslog2(2,buf,count); 36} 37 38static unsigned int kmsg_poll(struct file *file, poll_table * wait) 39{ 40 poll_wait(file, &log_wait2, wait); 41 if (do_syslog2(9, 0, 0)) 42 return POLLIN | POLLRDNORM; 43 return 0; 44} 45 46 47const struct file_operations proc_kmsg2_operations = { 48 .read = kmsg_read, 49 .poll = kmsg_poll, 50 .open = kmsg_open, 51 .release = kmsg_release, 52}; 53