event.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * event.c
  3.  *
  4.  * a device for sending from kernel to appl.
  5.  *
  6.  * Author: Yong-iL Joh <tolkien@mizi.com>
  7.  * Date  : $Date: 2002/05/14 02:19:42 $ 
  8.  *
  9.  * $Revision: 1.1.2.4 $
  10.    Tue 15 Jan 2002 Yong-iL Joh <tolkien@mizi.com>
  11.    - initial, see "kernel vs Application API spec (0.5, draft)"
  12.    Fri May 10 2002 Yong-iL Joh <tolkien@mizi.com>
  13.    - kernel vs app. API spec (draft) v1.33
  14.  *
  15.  * This file is subject to the terms and conditions of the GNU General Public
  16.  * License.  See the file COPYING in the main directory of this archive
  17.  * for more details.
  18.  */
  19. #include <linux/config.h>
  20. #include <linux/module.h>
  21. #include <linux/kernel.h>
  22. #include <linux/init.h>
  23. #include <linux/poll.h>
  24. #include <linux/errno.h>
  25. #include <asm/hardware.h>
  26. /*
  27.   system捞 sleep栏肺 甸绢埃 捞饶,
  28.   I/O device啊 wakeup登扁 傈鳖瘤 i/o access啊 甸绢坷绰 版快
  29.   芭何秦具 茄促.
  30. */
  31. int mz_sys_state = MZ_SYS_UNKNOWN;
  32. DECLARE_WAIT_QUEUE_HEAD(mz_event_queue);
  33. struct mz_event_queue_t mz_event_q;
  34. #define INCBUF(x,mod) (((x)+1) & ((mod) - 1))
  35. static void mz_event_task_handler(void *data) {
  36.     wake_up_interruptible(&mz_event_queue);
  37. }
  38. static struct tq_struct mz_event_task = {
  39.     routine: mz_event_task_handler
  40. };
  41. void event_notify(int x_evt) {
  42.     if (x_evt == SYSTEM_SLEEP)
  43.       mz_sys_state = MZ_SYS_SLEEP;
  44.     else if (x_evt == SYSTEM_WAKEUP)
  45.       mz_sys_state = MZ_SYS_WAKEUP;
  46.     mz_event_q.buf[mz_event_q.head] = x_evt;
  47.     mz_event_q.head = INCBUF(mz_event_q.head, MZ_EVENT_BUF_SIZE);
  48.     if (mz_event_q.head == mz_event_q.tail)
  49.       mz_event_q.tail = INCBUF(mz_event_q.tail, MZ_EVENT_BUF_SIZE);
  50.     schedule_task(&mz_event_task);
  51. }
  52. static int __init event_init(void)
  53. {
  54.     init_waitqueue_head(&mz_event_queue);
  55.     mz_event_q.head = mz_event_q.tail = 0;
  56.     return 0;
  57. }
  58. module_init(event_init);
  59. MODULE_AUTHOR("Yong-iL Joh");
  60. MODULE_DESCRIPTION("a device for sending from kernel to appl.");
  61. EXPORT_SYMBOL(event_notify);
  62. EXPORT_SYMBOL(mz_event_queue);
  63. EXPORT_SYMBOL(mz_event_q);
  64. EXPORT_SYMBOL(mz_sys_state);
  65. /*
  66.  | $Id: event.c,v 1.1.2.4 2002/05/14 02:19:42 tolkien Exp $
  67.  |
  68.  | Local Variables:
  69.  | mode: c
  70.  | mode: font-lock
  71.  | version-control: t
  72.  | delete-old-versions: t
  73.  | End:
  74.  |
  75.  | -*- End-Of-File -*-
  76.  */