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