/* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ /* bos720 src/bos/kernext/rcm/inc/sys/aixgsc.h 1.32 */ /* */ /* Licensed Materials - Property of IBM */ /* */ /* COPYRIGHT International Business Machines Corp. 1989,2002 */ /* All Rights Reserved */ /* */ /* US Government Users Restricted Rights - Use, duplication or */ /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /* */ /* IBM_PROLOG_END_TAG */ /* @(#)74 1.32 src/bos/kernext/rcm/inc/sys/aixgsc.h, rcm, bos720 4/5/02 17:35:55 */ #ifndef _H_GSC #define _H_GSC #include typedef char *genericPtr; /* generic pointer type */ typedef unsigned long long RCX_Handle; /* rcx handle */ typedef unsigned long long WG_Handle; /* wg handle */ typedef unsigned long long DeviceHandle; /* for use by DD's */ typedef uint SharedKey; /* for use by DD's */ #ifndef __64BIT_KERNEL typedef char *RCXP_Handle; /* rcx handle (not to be used as a pointer */ typedef char *WA_Handle; /* wa handle (not to be used as a pointer */ typedef char *CM_Handle; /* cm handle (not to be used as a pointer) */ typedef int globalID; /* rcxp global identifier */ #endif /* * commands processed by the aixgsc() system call ******************** */ #define GSCIO ('G'<<8) /* graphics system call */ #define MAX_PRIORITY 100 #define DEFAULT_PRIORITY 1 #define GSC_FAST_SYSCALL_ERROR_BASE (1L << 10) /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, MAKE_GP, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * make_gp arg; */ #define MAKE_GP (GSCIO | 1) typedef struct _make_gp { int error; /* error report */ caddr_t segment; /* segment base address */ genericPtr pData; /* device specific adapter addresses */ int length; /* length of device specific data */ int access; /* access authority */ # define SHARE_ACCESS 0 /* process shares access to adapter */ # define EXCLUSIVE_ACCESS 1 /* process cannot share access */ # define ADDR_ARRAY_VERSION (1L << 1) /* indicates the following two */ /* fields exist */ # define ALL_ADDR_RANGES (1L << 2) /* use all address ranges */ # define SP_THREAD (1L << 3) /* Special Purpose thread */ # define MP_MODEL_2 (1L << 4) /* Proc using MP model 2 */ int NumAddrRanges; /* number of address ranges req'd */ gAddrRanges *AddrRanges; /* array of address range info */ } make_gp; #ifdef __64BIT_KERNEL typedef struct _make_gp32 { int error; /* error report */ __ptr32 segment; /* unused for 64 bit */ __ptr32 pData; /* device specific adapter addresses */ int length; /* length of device specific data */ int access; /* access authority */ int NumAddrRanges; /* number of address ranges req'd */ __ptr32 AddrRanges; /* array of address range info */ } make_gp32; #endif /* ----------------------------------------------------------------- * * aixgsc (gsc_handle, UNMAKE_GP, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * unmake_gp arg; */ #define UNMAKE_GP (GSCIO | 2) typedef struct _unmake_gp { int error; /* error report */ } unmake_gp; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, SET_GP_PRIORITY, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * set_gp_priority arg; */ #define SET_GP_PRIORITY (GSCIO | 3) typedef struct _set_gp_priority { int error; /* error report */ int priority; /* grpahics process priority */ } set_gp_priority; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, SET_GP_CONTEXT_PRIORITY, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * set_gp_context_priority arg; */ #define SET_GP_CONTEXT_PRIORITY (GSCIO | 0x83) typedef struct _set_gp_context_priority { int error; /* error report */ RCX_Handle rcx_handle; /* from CREATE_RCX */ int priority; /* graphics context priority */ } set_gp_context_priority; #ifdef __64BIT_KERNEL typedef struct _set_gp_context_priority32 { int error; /* error report */ __long32_t rcx_handle; /* from CREATE_RCX */ int priority; /* graphics context priority */ } set_gp_context_priority32; #endif /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, CREATE_RCX, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * create_rcx arg; */ #define CREATE_RCX (GSCIO | 4) typedef struct _create_rcx { int error; /* error report */ int domain; /* domain id */ struct DomainLock { /* shared structure with kernel to */ int DomainLocked; /* manage domain locking protocol */ int TimeSliceExpired; } *pDomainLock; genericPtr pData; /* device dependent data */ int length; /* ddi length */ RCX_Handle rcx_handle; /* returned id */ } create_rcx; #ifdef __64BIT_KERNEL typedef struct _create_rcx32 { int error; /* error report */ int domain; /* domain id */ __ptr32 pDomainLock; __ptr32 pData; /* device dependent data */ int length; /* ddi length */ RCX_Handle rcx_handle; /* returned id */ } create_rcx32; #endif /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, DELETE_RCX, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * delete_rcx arg; */ #define DELETE_RCX (GSCIO | 5) typedef struct _delete_rcx { int error; /* error report */ RCX_Handle rcx_handle; /* from CREATE_RCX */ } delete_rcx; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, CREATE_WIN_GEOM, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * create_win_geom arg; */ #define CREATE_WIN_GEOM (GSCIO | 6) typedef struct _create_win_geom { int error; /* error report */ gWinGeomAttrPtr pWG; /* pointer to geometry */ WG_Handle wg; /* window geometry handle */ } create_win_geom; #ifdef __64BIT_KERNEL typedef struct _create_win_geom32 { int error; /* error report */ __ptr32 pWG; /* pointer to geometry */ WG_Handle wg; /* window geometry handle */ } create_win_geom32; #endif /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, DELETE_WIN_GEOM, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * delete_win_geom arg; */ #define DELETE_WIN_GEOM (GSCIO | 7) typedef struct _delete_win_geom { int error; /* error report */ WG_Handle wg; /* window geometry handle */ } delete_win_geom; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, UPDATE_WIN_GEOM, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * update_win_geom arg; */ #define UPDATE_WIN_GEOM (GSCIO | 8) typedef struct _update_win_geom { int error; /* error report */ WG_Handle wg; /* window geometry handle */ gWinGeomAttrPtr pWG; /* pointer to geometry */ int changes; /* change mask */ /* change mask described in gai.h */ } update_win_geom; #ifdef __64BIT_KERNEL typedef struct _update_win_geom32 { int error; /* error report */ WG_Handle wg; /* window geometry handle */ __ptr32 pWG; /* pointer to geometry */ int changes; /* change mask */ /* change mask described in gai.h */ } update_win_geom32; #endif #ifndef __64BIT_KERNEL /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, CREATE_WIN_ATTR, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * create_win_attr arg; */ #define CREATE_WIN_ATTR (GSCIO | 9) typedef struct _create_win_attr { int error; /* error report */ gWindowAttrPtr pWA; /* pointer to attribute */ WA_Handle wa; /* window attr handle */ } create_win_attr; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, DELETE_WIN_ATTR, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * delete_win_attr arg; */ #define DELETE_WIN_ATTR (GSCIO | 10) typedef struct _delete_win_attr { int error; /* error report */ WA_Handle wa; /* window attr handle */ } delete_win_attr; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, UPDATE_WIN_ATTR, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * update_win_attr arg; */ #define UPDATE_WIN_ATTR (GSCIO | 11) typedef struct _update_win_attr { int error; /* error report */ WA_Handle wa; /* window attr handle */ gWindowAttrPtr pWA; /* pointer to attribute */ int changes; /* change mask */ /* change mask described in gai.h */ } update_win_attr; #endif /* !64BIT_KERNEL */ /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, BIND_WINDOW, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * bind_window arg; */ #define BIND_WINDOW (GSCIO | 12) typedef struct _bind_window { int error; /* error report */ RCX_Handle rcx; /* rcx to bind to */ WG_Handle wg; /* window geometry to use. */ #ifndef __64BIT_KERNEL WA_Handle wa; /* window attributes to use. */ #endif /* Note that these must have been created */ } bind_window; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, BIND_DRAW_READ_WINDOWS, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * bind_draw_read_windows arg; */ #define BIND_DRAW_READ_WINDOWS (GSCIO | 92) typedef struct _bind_draw_read_windows { int error; /* error report */ RCX_Handle rcx; /* rcx to bind to */ WG_Handle draw; /* window geometry for drawing */ WG_Handle read; /* window geometry for reading */ } bind_draw_read_windows; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, SET_RCX, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * set_rcx arg; */ #define SET_RCX (GSCIO | 13) typedef struct _set_rcx { int error; /* error report */ RCX_Handle rcx; int domain; /* domain of NULL rcx */ } set_rcx; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, LOCK_HW, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * lock_hw arg; */ #define LOCK_HW (GSCIO | 14) typedef struct _lock_hw { int error; /* error report */ int wait; /* wait for lock to clear */ int status; /* pid of blocking process */ } lock_hw; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, UNLOCK_HW, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * struct unlock_hw arg; */ #define UNLOCK_HW (GSCIO | 15) typedef struct _unlock_hw { int error; /* error report */ } unlock_hw; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, LOCK_DOMAIN, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * lock_domain arg; */ #define LOCK_DOMAIN (GSCIO | 16) typedef struct _lock_domain { int error; /* error report */ int domain; /* domain id */ int wait; /* wait for lock to clear */ int status; /* pid of blocking process */ } lock_domain; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, UNLOCK_DOMAIN, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * unlock_domain arg; */ #define UNLOCK_DOMAIN (GSCIO | 17) typedef struct _unlock_domain { int error; /* error report */ int domain; /* domain id */ } unlock_domain; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, GIVE_UP_TIMESLICE, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * give_up_timeslice arg; */ #define GIVE_UP_TIMESLICE (GSCIO | 22) typedef struct _give_up_timeslice { int error; /* error report */ int domain; /* domain id */ } give_up_timeslice; #ifndef __64BIT_KERNEL /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, CREATE_RCXP, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * create_rcxp arg; */ #define CREATE_RCXP (GSCIO | 18) typedef struct _create_rcxp { int error; globalID id; int priority; int flags; genericPtr pData; int length; RCXP_Handle rcxp; } create_rcxp; /* * Values possible for the create_rcxp flags */ #define RCXP_RELOCATABLE 0x1 #define RCXP_INDIRECT 0x2 /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, DELETE_RCXP, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * delete_rcxp arg; */ #define DELETE_RCXP (GSCIO | 19) typedef struct _delete_rcxp { int error; RCXP_Handle rcxp; } delete_rcxp; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, ASSOCIATE_RCXP, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * associate_rcxp arg; */ #define ASSOCIATE_RCXP (GSCIO | 20) typedef struct _associate_rcxp { int error; RCX_Handle rcx; int length; RCXP_Handle asso[5]; } associate_rcxp; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, DISASSOCIATE_RCXP, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * disassociate_rcxp arg; */ #define DISASSOCIATE_RCXP (GSCIO | 21) typedef struct _disassociate_rcxp { int error; RCX_Handle rcx; int length; RCXP_Handle dasso[5]; } disassociate_rcxp; #endif /* !64BIT_KERNEL */ /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, COMMAND_LIST, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * command_list arg; */ #define COMMAND_LIST (GSCIO | 29) #define MAX_CMDS 5 typedef struct _command_list { int error; int count; struct { int command; char *carg; } cmd_list[MAX_CMDS]; } command_list; #ifdef __64BIT_KERNEL typedef struct _command_list32 { int error; int count; struct { int command; __ptr32 carg; } cmd_list[MAX_CMDS]; } command_list32; #endif #ifndef __64BIT_KERNEL /* * NOTE: As of 5.2, this is no longer supported. However, I'm not sure * whether or not there might still be code using these, and I don't * have the time right now to investigate, and I don't want to break the * build, so I'm leaving them intact for now. */ #define DMA_SERVICE (GSCIO | 30) #define MAX_SUBAREAS 0x04 typedef struct _gscdma { ulong error; #define DMA_INCOMPLETE 0x01 ulong flags; #define DMA_WAIT 0x01 #define DMA_POLL 0x02 #define DMA_READ 0x80 #define DMA_WRITE 0x40 #define DMA_RDWR 0x20 #define DMA_FREE 0x100 #define DMA_START_FLAG 0x200 #define DMA_DIAGNOSTICS 0x8000 caddr_t dma_cmd; long cmd_length; int num_sw; struct sw { int sw_flag; #define DMA_PINNED 0x04 #define LEAVE_PINNED 0x08 #define DMA_INVALIDATE 0x10 #define DMA_START_SW 0x20 caddr_t sw_addr; int sw_length; } subwindow [MAX_SUBAREAS]; } gscdma; #endif /* !64BIT_KERNEL */ /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, DEV_DEP_FUN, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * dev_dep_fun arg; */ #define DEV_DEP_FUN (GSCIO | 50) typedef struct _dev_dep_fun { int error; /* error code */ int cmd; /* device specific operation to perform */ caddr_t ddi; /* device dependent data */ int ddi_len; /* length of ddi */ } dev_dep_fun; #ifdef __64BIT_KERNEL typedef struct _dev_dep_fun32 { int error; /* error code */ int cmd; /* device specific operation to perform */ __ptr32 ddi; /* device dependent data */ int ddi_len; /* length of ddi */ } dev_dep_fun32; #endif /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, GSC_RCM_REQ, cmd, parm1, parm2, parm3, parm4, parm5) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) */ #define GSC_RCM_REQ (GSCIO | 51) /* permitted values for cmd */ #define gsc_SHM_INIT 1 #define gsc_SHM_EXTEND 2 #define gsc_SHM_DELETE 3 /* permitted values for parm1, for the gsc_SHM_* cmds */ #define gsc_SHM_Unused 0 /**//* dsgn did not define */ #define gsc_SHM_CurrDispBuff 1 #define gsc_SHM_MBX 2 #define gsc_SHM_hwSync 3 #define gsc_SHM_Spare4 4 #define gsc_SHM_Spare5 5 #define gsc_SHM_Spare6 6 #define gsc_SHM_Spare7 7 /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, GSC_DEVICE_REQ, cmd, * parm1, parm2, parm3, parm4, parm5) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) */ #define GSC_DEVICE_REQ (GSCIO | 52) #ifndef __64BIT_KERNEL /*------------------ Event handling types and structures -----------------*/ #define BAD_ARRAY_SIZE 99 typedef ulong eventMask; /* Device specific mask for event types */ typedef struct _eventMasks { eventMask s_mask; /* synchronous event mask */ eventMask a_mask; /* asynchronous event mask */ eventMask e_mask; /* events requested for continous enable */ eventMask occurred; /* interrupts pending service */ } eventMasks; typedef struct _eventReport { eventMask event; /* Event type mask */ time_t time; /* timestamp */ RCX_Handle rcx; /* rendering context ID */ /* If null then no RCX id */ WA_Handle wa; /* window attribute ID */ /* If null the process has no window */ int data[4]; /* device dependent event data */ } eventReport; typedef struct _eventArray { int a_size; /* size of event array */ int number_req; /* number of events requested */ int number_used; /* actual number of events reported */ /* set to negative if overflowed */ eventReport event[1]; /* array of events */ } eventArray, *eventArrayPtr; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, ASYNC_EVENT, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * struct async_event arg; */ #define ASYNC_EVENT (GSCIO | 69) struct async_event { long error; /* error report */ eventMask mask; /* Mask for events */ long num_events; /* number to report */ }; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, GET_EVENTS, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * struct get_events arg; */ #define GET_EVENTS (GSCIO | 70) struct get_events { long error; /* error report */ eventArray *array; /* array to place events in */ long num_events; /* number to report */ }; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, EVENT_BUFFER, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * struct event_buffer arg; */ #define EVENT_BUFFER (GSCIO | 71) struct event_buffer { long error; /* error report */ long length; /* event buffer length */ }; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, WAIT_EVENT, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * struct wait_event arg; */ #define WAIT_EVENT (GSCIO | 72) struct wait_event { long error; /* error report */ eventMask mask; /* Mask for events */ eventReport report; /* Holder to place data into */ genericPtr pData; /* event buffer */ long length; /* event buffer length */ long wait; /* wait flag 1=wait */ }; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, ENABLE_EVENT, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * struct enable_event arg; */ #define ENABLE_EVENT (GSCIO | 73) struct enable_event { long error; /* error report */ eventMask e_event; /* event mask to be enabled */ }; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, CREATE_COLORMAP, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * create_colormap arg; */ #define CREATE_COLORMAP (GSCIO | 74) typedef struct _create_colormap { int error; /* error report */ CM_Handle cm_handle; /* returned id */ } create_colormap; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, DELETE_COLORMAP, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * delete_colormap arg; */ #define DELETE_COLORMAP (GSCIO | 75) typedef struct _delete_colormap { int error; /* error report */ CM_Handle cm_handle; /* returned id */ } delete_colormap; /* ----------------------------------------------------------------- * * aixgsc(gsc_handle, UPDATE_COLORMAP, &arg) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) * update_colormap arg; */ #define UPDATE_COLORMAP (GSCIO | 76) typedef struct _update_colormap { int error; /* error report */ CM_Handle cm_handle; /* returned id */ int new_hwdmap; /* requested hardware map number */ } update_colormap; #endif /* !64BIT_KERNEL */ /* ------------------------------------------------------ * * aixgsc(gsc_handle, DISP_PM, cmd, parm1) * GSC_HANDLE gsc_handle - return from ioctl(fd, HFHANDLE, &gsc_handle) */ #define DISP_PM (GSCIO | 77) /* permitted values for cmd */ #define CHANGE_POWER_STATE 1 /* definitions for parm1 * * parm1 = state to change. The possble power consumption states are * * 1 = display on * 2 = display standby * 3 = display suspend * 4 = display off * * The following values are only used by Woodfield and its follow-on products * * 5 = LCD_ON * 6 = LCD_OFF * 7 = CRT_ON * 8 = CRT_OFF */ #define LCD_ON 5 #define LCD_OFF 6 #define CRT_ON 7 #define CRT_OFF 8 /* * end of aixgsc() commands ********************************** */ /* * Performance trace definitions */ #define PTID_ENTRY 0 #define PTID_EXIT 1 #endif /* _H_GSC */