📄 event.h
字号:
/* * event.h * * Kernel event access routines and data structures. * * Author: MontaVista Software, Inc. * source@mvista.com * * Copyright 2001 MontaVista Software Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 675 Mass Ave, Cambridge, MA 02139, USA. */#ifndef EVENT_H#define EVENT_H/* User request uses for the Flag in EvPacket_t */#define EF_WAIT_FOR_EVENT 0x1/* Flag values to indicate the status of the extra data field. */#define EF_DATA_AVAIL 0x2#define EF_DATA_FAILURE 0x4/* Event class zero indicates send all events for that class. */#define EC_ALL 0/* All local events default to locality zero */#define EG_LOCAL 0/* Indication that not access code has been set. */#define EAC_NONE 0/* Types of non local event group types */#define EG_MASTER 1#define EG_MEMBER 2/* Control class for groups is always zero */#define EV_CONTROL_CLASS_ID 0/* Events to be processed by control class. */#define EV_REM_GET_MEMBER_ID 1#define EV_REM_GET_MEMBER_NAME 2#define EV_REM_REGISTER_EVENT_CLASS 3#define EV_MASTER_REG_EVENT_CLASS 4#define EV_REM_UNREGISTER_EVENT_CLASS 5#define EV_MASTER_UNREG_EVENT_CLASS 6#define EV_REM_GET_USER_ID 7#define EV_REM_GET_USER_NAME 8/* Error codes known by the event manager. */#define EV_NOERR 0#define EV_ERROR_MIN 400#define EV_ERROR_GROUP_EXIST 401#define EV_ERROR_GROUP_ACCESS 402#define EV_ERROR_GROUP_BUSY 403#define EV_ERROR_GROUP_TYPE 404#define EV_ERROR_MEMBER_EXIST 405#define EV_ERROR_NO_REMOTE 406#define EV_ERROR_NO_REQUESTOR 407#define EV_ERROR_TIMEOUT 408#define EV_ERROR_CLASS_EXISTS 409#define EV_ERROR_CLASS_BUSY 410#define EV_ERROR_CLASS_ACCESS 411#define EV_ERROR_CLASS_NO_SUB 412#define EV_ERROR_USER_EXISTS 413#define EV_ERROR_NO_EVENT 414#define EV_ERROR_INVALID_COPY_IN 415#define EV_ERROR_INVALID_COPY_OUT 416#define EV_ERROR_MEM_ALLOC 417#define EV_ERROR_WAIT_INTERRUPTED 418#define EV_ERROR_INVALID_REQEST 419#define EV_ERROR_QUEUE_FULL 420#define EV_ERROR_NOT_SU 421#define EV_ERROR_MAX EV_ERROR_NOT_SUtypedef unsigned int EvUserID_t;typedef unsigned short EvGroupID_t;typedef unsigned short EvClassID_t;typedef unsigned short EvEventID_t;typedef short EvType_t;typedef int EvPri_t;typedef unsigned int EvAccess_t;/* Structure of an event packet. */typedef struct ev_packet { int EpFlag; /* Used to indicate sleep wait or not. */ EvUserID_t EpSenderID; EvPri_t EpPri; EvGroupID_t EpGroupID; EvGroupID_t EpMemberID; EvClassID_t EpClassID; EvEventID_t EpEventID; EvAccess_t EpAccessCode; struct timeval EpTimeStamp; int EpInfo[4]; int EpDataLen; void *EpData; struct ev_packet *EpNext;} EvPacket_t;/* Structure used to request and event to be sent to a process or not. */typedef struct ev_req { EvEventID_t ErUserID; EvPri_t ErPri; EvGroupID_t ErGroupID; EvClassID_t ErClassID; EvEventID_t ErEventID; EvAccess_t ErAccessCode;} EvReq_t;/* Data structure used by EV_REG_ID, EV_UNREG_ID and EV_GET_ID. */typedef struct ev_class { EvGroupID_t EcGroupID; EvClassID_t EcClassID; EvAccess_t EcGroupAccessCode; EvAccess_t EcClassAccessCode; char EcName[16];} EvClass_t;/* Data structure used by EV_REG_ID, EV_UNREG_ID and EV_GET_ID. */typedef struct ev_group { char EgGroupName[16]; char EgMemberName[16]; EvGroupID_t EgMasterID; EvType_t EgType; short EgHashSize; EvAccess_t EgGroupAccessCode; EvAccess_t EgControlAccessCode; EvGroupID_t EgGroupID; EvGroupID_t EgMemberID;} EvGroup_t;/* Data structure used by EV_REG_ID, EV_UNREG_ID and EV_GET_ID. */typedef struct ev_user { EvGroupID_t EuGroupID; EvGroupID_t EuMemberID; EvUserID_t EuID; char EuName[16];} EvUser_t;typedef struct ev_access { EvGroupID_t EaGroupID; EvClassID_t EaClassID; EvAccess_t EaOldAccessCode; EvAccess_t EaNewAccessCode;} EvAccessCode_t;/* User level ioctl cmd identifiers. */#define EV_MAGIC 0xd0#define EV_REG_USER _IOWR(EV_MAGIC, 1, EvUser_t)#define EV_UNREG_USER _IO(EV_MAGIC, 2)#define EV_GET_USER_ID _IOWR(EV_MAGIC, 3, EvUser_t)#define EV_COMP_USER_ID _IOWR(EV_MAGIC, 4, EvUser_t)#define EV_GET_USER_NAME _IOWR(EV_MAGIC, 5, EvUser_t)#define EV_COMP_USER_NAME _IOWR(EV_MAGIC, 6, EvUser_t)#define EV_CREATE_GROUP _IOWR(EV_MAGIC, 7, EvGroup_t)#define EV_DELETE_GROUP _IOW(EV_MAGIC, 8, EvGroup_t)#define EV_ATTACH_GROUP _IOWR(EV_MAGIC, 9, EvGroup_t)#define EV_DETACH_GROUP _IOW(EV_MAGIC, 10, EvGroup_t)#define EV_GET_GROUP_ID _IOWR(EV_MAGIC, 11, EvGroup_t)#define EV_GET_GROUP_NAME _IOWR(EV_MAGIC, 12, EvGroup_t)#define EV_GET_MEMBER_ID _IOWR(EV_MAGIC, 13, EvGroup_t)#define EV_COMP_MEMBER_ID _IOW(EV_MAGIC, 14, EvPacket_t)#define EV_GET_MEMBER_NAME _IOWR(EV_MAGIC, 15, EvGroup_t)#define EV_COMP_MEMBER_NAME _IOW(EV_MAGIC, 16, EvPacket_t)#define EV_REG_EVENT_CLASS _IOWR(EV_MAGIC, 17, EvClass_t)#define EV_REM_REG_EVENT_CLASS _IOWR(EV_MAGIC, 18, EvPacket_t)#define EV_UNREG_EVENT_CLASS _IOW(EV_MAGIC, 19, EvClass_t)#define EV_REM_UNREG_EVENT_CLASS _IOWR(EV_MAGIC, 20, EvPacket_t)#define EV_GET_EVENT_CLASS _IOWR(EV_MAGIC, 21, EvClass_t)#define EV_GET_EVENT_CLASS_NAME _IOWR(EV_MAGIC, 22, EvClass_t)#define EV_SUBSCRIBE_EVENT _IOW(EV_MAGIC, 23, EvReq_t)#define EV_UNSUBSCRIBE_EVENT _IOW(EV_MAGIC, 24, EvReq_t)#define EV_SUBSCRIBE_GROUP_EV _IOW(EV_MAGIC, 25, EvReq_t)#define EV_UNSUBSCRIBE_GROUP_EV _IOW(EV_MAGIC, 26, EvReq_t)#define EV_GET_EVENT _IOWR(EV_MAGIC, 27, EvPacket_t)#define EV_SEND_EVENT _IOW(EV_MAGIC, 28, EvPacket_t)#define EV_REM_SEND_EVENT _IOW(EV_MAGIC, 29, EvPacket_t)#define EV_SYNC_TO_MEMBER _IOW(EV_MAGIC, 30, EvReq_t)#define EV_SET_GROUP_ACCESSCODE _IOW(EV_MAGIC, 31, EvAccessCode_t)#define EV_SET_CLASS_ACCESSCODE _IOW(EV_MAGIC, 32, EvAccessCode_t)#define EV_SET_Q_LIMIT _IOW(EV_MAGIC, 33, unsigned int)#define EV_SET_SYS_Q_LIMIT _IOW(EV_MAGIC, 34, unsigned int)#ifdef __KERNEL__#ifdef CONFIG_EVENT_BROKER/* Kernel interface access function prototypes. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -