⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fusion.h

📁 linux下的fusion程序,可以和directfb配合使用
💻 H
字号:
#ifndef __LINUX__FUSION_H__#define __LINUX__FUSION_H__#include <asm/ioctl.h>/* * Fusion Kernel Device API Version */#define FUSION_API_MAJOR      7         /* Increased if backward compatibility is dropped. */#define FUSION_API_MINOR      0         /* Increased if new features are added. *//* * The Fusion ID is a unique identifier for one process consisting of threads. */typedef unsigned long FusionID;#define FUSION_ID_MASTER      1         /* This is the fusion id of the master (first process). *//* * Entering a world */typedef struct {     struct {          int            major;         /* Must be set to FUSION_API_MAJOR before entering. */          int            minor;         /* Must be set to FUSION_API_MINOR before entering. */     } api;     FusionID            fusion_id;     /* Returns the fusion id of the entering process. */} FusionEnter;/* * Forking in world */typedef struct {     FusionID            fusion_id;     /* Returns the fusion id of the new (forked) fusionee. */} FusionFork;/* * Sending a message */typedef struct {     FusionID            fusion_id;     /* recipient */     int                 msg_id;        /* optional message identifier */     int                 msg_channel;   /* optional channel number */     int                 msg_size;      /* message size, must be greater than zero */     const void         *msg_data;      /* message data, must not be NULL */} FusionSendMessage;/* * Receiving a message */typedef enum {     FMT_SEND,                          /* msg_id is an optional custom id */     FMT_CALL,                          /* msg_id is the call id */     FMT_REACTOR,                       /* msg_id is the reactor id */     FMT_SHMPOOL                        /* msg_id is the pool id */} FusionMessageType;typedef struct {     FusionMessageType   msg_type;      /* type (origin) of message */     int                 msg_id;        /* message id (custom id or call/reactor/pool id) */     int                 msg_size;      /* size of the following message data */     int                 msg_channel;   /* optional or reactor channel */     /* message data follows */} FusionReadMessage;/* * Dispatching a message via a reactor */typedef struct {     int                 reactor_id;    /* id of target reactor */     int                 channel;       /* optional reactor channel (0-1023) */     int                 self;          /* send to ourself if attached */     int                 msg_size;      /* message size, must be greater than zero */     const void         *msg_data;      /* message data, must not be NULL */} FusionReactorDispatch;/* * Attaching to a reactor */typedef struct {     int                 reactor_id;     int                 channel;} FusionReactorAttach;/* * Detaching from a reactor */typedef struct {     int                 reactor_id;     int                 channel;} FusionReactorDetach;/* * Registering a dispatch callback * * The call_arg will be set to the channel number */typedef struct {     int                 reactor_id;     int                 call_id;       /* id of the call to execute when a message has been                                           processed by all recipients of the dispatch */     int                *call_ptr;      /* optional call parameter, e.g. the pointer of a user                                           space resource associated with that reference */} FusionReactorSetCallback;/* * Calling (synchronous RPC) */typedef struct {     int                 call_id;       /* new call id returned */     void               *handler;       /* function pointer of handler to install */     void               *ctx;           /* optional handler context */} FusionCallNew;typedef enum {     FCEF_NONE   = 0x00000000,     FCEF_ONEWAY = 0x00000001,     FCEF_ALL    = 0x00000001} FusionCallExecFlags;typedef struct {     int                 ret_val;       /* return value of the call */     int                 call_id;       /* id of the requested call, each call has a fixed owner */     int                 call_arg;      /* optional int argument */     void               *call_ptr;      /* optional pointer argument (shared memory) */     FusionCallExecFlags flags;         /* execution flags */} FusionCallExecute;typedef struct {     int                 call_id;       /* id of currently executing call */     int                 val;           /* value to return */     unsigned int        serial;        } FusionCallReturn;typedef struct {     void               *handler;       /* function pointer of handler to call */     void               *ctx;           /* optional handler context */     int                 caller;        /* fusion id of the caller or zero if called from Fusion */     int                 call_arg;      /* optional call parameter */     void               *call_ptr;      /* optional call parameter */     unsigned int        serial;} FusionCallMessage;/* * Watching a reference * * This information is needed to have a specific call being executed if the * reference count reaches zero. Currently one watch per reference is allowed. * * The call is made by Fusion and therefor has a caller id of zero. * */typedef struct {     int                 id;            /* id of the reference to watch */     int                 call_id;       /* id of the call to execute */     int                 call_arg;      /* optional call parameter, e.g. the id of a user                                           space resource associated with that reference */} FusionRefWatch;/* * Inheriting local count from other reference */typedef struct {     int                 id;            /* own reference id */     int                 from;          /* id of the reference to inherit from */} FusionRefInherit;/* * Killing other fusionees (experimental) */typedef struct {     FusionID            fusion_id;     /* fusionee to kill, zero means all but ourself */     int                 signal;        /* signal to be delivered, e.g. SIGTERM */     int                 timeout_ms;    /* -1 means no timeout, 0 means infinite, otherwise the                                           max. time to wait until the fusionee(s) terminated */} FusionKill;/* * Wait for a skirmish notification */typedef struct {     int                 id;            /* skirmish id */     unsigned int        timeout;       /* timeout in ms (0 = unlimited) */} FusionSkirmishWait;/* * Shared memory pools */typedef struct {     int                 max_size;      /* Maximum size that this pool will be allowed to grow to. */     int                 pool_id;       /* Returns the new pool id. */     void               *addr_base;     /* Returns the base of the reserved virtual memory address space. */} FusionSHMPoolNew;typedef struct {     int                 pool_id;       /* The id of the pool to attach to. */     void               *addr_base;     /* Returns the base of the reserved virtual memory address space. */     int                 size;          /* Returns the current size of the pool. */} FusionSHMPoolAttach;typedef struct {     int                 pool_id;       /* The id of the pool to notify. */     int                 size;          /* New size of the pool. */} FusionSHMPoolDispatch;typedef enum {     FSMT_REMAP,                        /* Remap the pool due to a change of its size. */     FSMT_UNMAP                         /* Unmap the pool due to its destruction. */} FusionSHMPoolMessageType;typedef struct {     FusionSHMPoolMessageType type;     /* Type of the message. */     int                      size;     /* New size of the pool, if type is FSMT_REMAP. */} FusionSHMPoolMessage;/* * Fusion types */typedef enum {     FT_LOUNGE,     FT_MESSAGING,     FT_CALL,     FT_REF,     FT_SKIRMISH,     FT_PROPERTY,     FT_REACTOR,     FT_SHMPOOL} FusionType;/* * Set attributes like 'name' for an entry of the specified type. */#define FUSION_ENTRY_INFO_NAME_LENGTH   24typedef struct {     FusionType          type;     int                 id;     char                name[FUSION_ENTRY_INFO_NAME_LENGTH];} FusionEntryInfo;#define FUSION_ENTER                         _IOR(FT_LOUNGE,    0x00, FusionEnter)#define FUSION_UNBLOCK                       _IO (FT_LOUNGE,    0x01)#define FUSION_KILL                          _IOW(FT_LOUNGE,    0x02, FusionKill)#define FUSION_ENTRY_SET_INFO                _IOW(FT_LOUNGE,    0x03, FusionEntryInfo)#define FUSION_ENTRY_GET_INFO                _IOW(FT_LOUNGE,    0x04, FusionEntryInfo)#define FUSION_FORK                          _IOW(FT_LOUNGE,    0x05, FusionFork)#define FUSION_SEND_MESSAGE                  _IOW(FT_MESSAGING, 0x00, FusionSendMessage)#define FUSION_CALL_NEW                      _IOW(FT_CALL,      0x00, FusionCallNew)#define FUSION_CALL_EXECUTE                  _IOW(FT_CALL,      0x01, FusionCallExecute)#define FUSION_CALL_RETURN                   _IOW(FT_CALL,      0x02, FusionCallReturn)#define FUSION_CALL_DESTROY                  _IOW(FT_CALL,      0x03, int)#define FUSION_REF_NEW                       _IOW(FT_REF,       0x00, int)#define FUSION_REF_UP                        _IOW(FT_REF,       0x01, int)#define FUSION_REF_UP_GLOBAL                 _IOW(FT_REF,       0x02, int)#define FUSION_REF_DOWN                      _IOW(FT_REF,       0x03, int)#define FUSION_REF_DOWN_GLOBAL               _IOW(FT_REF,       0x04, int)#define FUSION_REF_ZERO_LOCK                 _IOW(FT_REF,       0x05, int)#define FUSION_REF_ZERO_TRYLOCK              _IOW(FT_REF,       0x06, int)#define FUSION_REF_UNLOCK                    _IOW(FT_REF,       0x07, int)#define FUSION_REF_STAT                      _IOW(FT_REF,       0x08, int)#define FUSION_REF_WATCH                     _IOW(FT_REF,       0x09, FusionRefWatch)#define FUSION_REF_INHERIT                   _IOW(FT_REF,       0x0A, FusionRefInherit)#define FUSION_REF_DESTROY                   _IOW(FT_REF,       0x0B, int)#define FUSION_SKIRMISH_NEW                  _IOW(FT_SKIRMISH,  0x00, int)#define FUSION_SKIRMISH_PREVAIL              _IOW(FT_SKIRMISH,  0x01, int)#define FUSION_SKIRMISH_SWOOP                _IOW(FT_SKIRMISH,  0x02, int)#define FUSION_SKIRMISH_DISMISS              _IOW(FT_SKIRMISH,  0x03, int)#define FUSION_SKIRMISH_DESTROY              _IOW(FT_SKIRMISH,  0x04, int)#define FUSION_SKIRMISH_LOCK_COUNT           _IOW(FT_SKIRMISH,  0x05, int)#define FUSION_SKIRMISH_WAIT                 _IOW(FT_SKIRMISH,  0x06, FusionSkirmishWait)#define FUSION_SKIRMISH_NOTIFY               _IOW(FT_SKIRMISH,  0x07, int)#define FUSION_PROPERTY_NEW                  _IOW(FT_PROPERTY,  0x00, int)#define FUSION_PROPERTY_LEASE                _IOW(FT_PROPERTY,  0x01, int)#define FUSION_PROPERTY_PURCHASE             _IOW(FT_PROPERTY,  0x02, int)#define FUSION_PROPERTY_CEDE                 _IOW(FT_PROPERTY,  0x03, int)#define FUSION_PROPERTY_HOLDUP               _IOW(FT_PROPERTY,  0x04, int)#define FUSION_PROPERTY_DESTROY              _IOW(FT_PROPERTY,  0x05, int)#define FUSION_REACTOR_NEW                   _IOW(FT_REACTOR,   0x00, int)#define FUSION_REACTOR_ATTACH                _IOW(FT_REACTOR,   0x01, FusionReactorAttach)#define FUSION_REACTOR_DETACH                _IOW(FT_REACTOR,   0x02, FusionReactorDetach)#define FUSION_REACTOR_DISPATCH              _IOW(FT_REACTOR,   0x03, FusionReactorDispatch)#define FUSION_REACTOR_DESTROY               _IOW(FT_REACTOR,   0x04, int)#define FUSION_REACTOR_SET_DISPATCH_CALLBACK _IOW(FT_REACTOR,   0x05, FusionReactorSetCallback)#define FUSION_SHMPOOL_NEW                   _IOW(FT_SHMPOOL,   0x00, FusionSHMPoolNew)#define FUSION_SHMPOOL_ATTACH                _IOW(FT_SHMPOOL,   0x01, FusionSHMPoolAttach)#define FUSION_SHMPOOL_DETACH                _IOW(FT_SHMPOOL,   0x02, int)#define FUSION_SHMPOOL_DISPATCH              _IOW(FT_SHMPOOL,   0x03, FusionSHMPoolDispatch)#define FUSION_SHMPOOL_DESTROY               _IOW(FT_SHMPOOL,   0x04, int)#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -