kmsg.c
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

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