|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /****************************************************************************** ! 26: ! 27: ev_private.h ! 28: Internal defs for the events driver. The contents of this module ! 29: may need to be tweaked slightly from one architecture to the next. ! 30: 22 May 1992 Mike Paquette at NeXT Computers, Inc. ! 31: ! 32: Copyright 1992 NeXT, Inc. ! 33: ! 34: Modified: ! 35: ! 36: ! 37: ******************************************************************************/ ! 38: ! 39: #ifdef DRIVER_PRIVATE ! 40: ! 41: #ifndef _PPC_DEV_EV_PRIVATE_ ! 42: #define _PPC_DEV_EV_PRIVATE_ ! 43: ! 44: #import <bsd/dev/machine/event.h> ! 45: /* ! 46: * Prototypes for functions implementing machine dependent code. ! 47: */ ! 48: IOReturn ! 49: createEventShmem( port_t task, // in ! 50: vm_size_t size, // in ! 51: struct vm_map **owner, // out ! 52: vm_offset_t *owner_addr, // out ! 53: vm_offset_t *shmem_addr ); // out ! 54: IOReturn ! 55: destroyEventShmem( port_t task, ! 56: struct vm_map *owner, ! 57: vm_size_t size, ! 58: vm_offset_t owner_addr, ! 59: vm_offset_t shmem_addr ); ! 60: ! 61: const char **defaultEventSources(void); ! 62: ! 63: /* Initial cursor position */ ! 64: #define INIT_CURSOR_X 100 ! 65: #define INIT_CURSOR_Y 100 ! 66: ! 67: /* Default mouse click time and motion constants */ ! 68: #define EV_DCLICKTIME 30 /* Default ticks for a double-click */ ! 69: #define EV_DCLICKSPACE 3 /* Default pixel threshold for double-clicks */ ! 70: ! 71: /* Default Wait Cursor Timing Constants (in nanoseconds) */ ! 72: #define DefaultWCSustain 300000000ULL /* 0.3 seconds */ ! 73: #define DefaultWCFrameRate 75000000ULL /* 13.3 frames/second */ ! 74: #define DefaultWCThreshold 1200000000ULL /* 1.2 seconds */ ! 75: ! 76: #define EV_STD_CURSOR 0 ! 77: #define EV_WAITCURSOR 1 ! 78: #define EV_WAITCURSOR_1 2 ! 79: #define EV_WAITCURSOR_2 3 ! 80: #define EV_MAXCURSOR (EV_WAITCURSOR_2) ! 81: ! 82: /* Default dim time is 5 minutes */ ! 83: #define DAUTODIMPERIOD (EV_TICKS_PER_SEC*60*5) ! 84: /* Default dim level is one-fourth */ ! 85: #define DDIMBRIGHTNESS (EV_SCREEN_MAX_BRIGHTNESS/4) ! 86: ! 87: ! 88: /* Where event numbers start */ ! 89: #define INITEVENTNUM 13 ! 90: #define NULLEVENTNUM 0 /* The event number that never was */ ! 91: ! 92: #define MOVEDEVENTMASK \ ! 93: (NX_MOUSEMOVEDMASK | NX_LMOUSEDRAGGEDMASK | NX_RMOUSEDRAGGEDMASK ) ! 94: #define COALESCEEVENTMASK \ ! 95: (MOVEDEVENTMASK | NX_MOUSEEXITEDMASK) ! 96: #define MOUSEEVENTMASK \ ! 97: (NX_LMOUSEDOWNMASK|NX_RMOUSEDOWNMASK|NX_LMOUSEUPMASK|NX_RMOUSEUPMASK) ! 98: #define PRESSUREEVENTMASK \ ! 99: (NX_LMOUSEDOWNMASK|NX_LMOUSEUPMASK|NX_MOUSEMOVEDMASK|NX_LMOUSEDRAGGEDMASK) ! 100: ! 101: #define HARD_POWEROFF_MASK (NX_COMMANDMASK|NX_ALTERNATEMASK) ! 102: /* Flags used to trigger debug operations in a DEBUG kernel */ ! 103: #define PWR_BREAK_TO_DEBUGGER_MASK (NX_CONTROLMASK) ! 104: #define BRIGHT_BREAK_TO_DEBUGGER_MASK (NX_ALTERNATEMASK|NX_SHIFTMASK) ! 105: ! 106: /* Flags which can modify meaning of special volume/brightness keys */ ! 107: #define SPECIALKEYS_MODIFIER_MASK \ ! 108: (NX_COMMANDMASK|NX_ALTERNATEMASK|NX_CONTROLMASK) ! 109: ! 110: /* Bits in evg->eventFlags owned by keyboard devices */ ! 111: #define KEYBOARD_FLAGSMASK \ ! 112: (NX_ALPHASHIFTMASK | NX_SHIFTMASK | NX_CONTROLMASK | NX_ALTERNATEMASK \ ! 113: | NX_COMMANDMASK | NX_NUMERICPADMASK | NX_HELPMASK | NX_NEXTCTLKEYMASK\ ! 114: | NX_NEXTLSHIFTKEYMASK | NX_NEXTRSHIFTKEYMASK | NX_NEXTLCMDKEYMASK \ ! 115: | NX_NEXTRCMDKEYMASK | NX_NEXTLALTKEYMASK | NX_NEXTRALTKEYMASK) ! 116: ! 117: /* bits in evg->eventFlags owned by pointer devices */ ! 118: #define POINTER_FLAGSMASK \ ! 119: (NX_STYLUSPROXIMITYMASK | NX_NONCOALSESCEDMASK) ! 120: #define SCREENTOKEN 256 /* Some non-zero token to or with screen number */ ! 121: ! 122: /* A macro to report if the event queue is not empty */ ! 123: #define EventsInQueue() \ ! 124: (eventsOpen && (((EvGlobals*)evg)->LLEHead != ((EvGlobals*)evg)->LLETail)) ! 125: ! 126: /* ! 127: * Internal types and definitions used to drive I/O thread operations. ! 128: */ ! 129: #define EV_IO_OP_MSG_ID 1 ! 130: /* Private control message IDs used in talking to the EventListener thread */ ! 131: typedef enum { ! 132: EVENT_LISTENER_EXIT, ! 133: EVENT_LISTENER_PING, ! 134: EVENT_LISTENER_CALLBACK ! 135: } evIoOp; ! 136: ! 137: // Parameters to use for Obj-C callback from I/O thread ! 138: typedef struct ! 139: { ! 140: id instance; // Sender and reciever MUST be ! 141: SEL selector; // in the same address space ! 142: id data; // for this to work. ! 143: } evCallback; ! 144: ! 145: // Union of all possible param structs we may want to pass ! 146: typedef union { ! 147: evCallback callback; // EVENT_LISTENER_CALLBACK ! 148: } evIoOpParams; ! 149: ! 150: typedef struct { ! 151: evIoOp op; // EVENT_LISTENER_EXIT, etc. ! 152: id cmdLock; // NXConditionLock. Exported ! 153: // methods sleep on this. ! 154: IOReturn *status; // Returned status if any ! 155: evIoOpParams params; ! 156: } evIoOpBuf; ! 157: ! 158: /* ! 159: * Condition variable states for evIoOpBuf.cmdLock. ! 160: */ ! 161: #define CMD_INPROGRESS 1 ! 162: #define CMD_DONE 2 ! 163: ! 164: /* ! 165: * Mach message wrapper for threadOpBuf. ! 166: */ ! 167: typedef struct { ! 168: msg_header_t header; ! 169: msg_type_t type; ! 170: evIoOpBuf opBuf; ! 171: } evIoOpMsg; ! 172: ! 173: /* ! 174: * Low level communications buffers between the Event IO thread and ! 175: * the Event Driver and clients. ! 176: */ ! 177: #define EV_INBUFLEN 512 // sizes for message buffers ! 178: #define EV_OUTBUFLEN 5120 // Tweak to match MiG max sizes ! 179: ! 180: typedef struct { ! 181: msg_header_t hdr; ! 182: char data[EV_INBUFLEN - sizeof (msg_header_t)]; ! 183: } EvInMsg; ! 184: ! 185: typedef struct { ! 186: msg_header_t hdr; ! 187: char data[EV_OUTBUFLEN - sizeof (msg_header_t)]; ! 188: } EvOutMsg; ! 189: ! 190: struct _eventMsg { ! 191: msg_header_t h; ! 192: msg_type_t t; ! 193: }; ! 194: ! 195: /****************************************************************************** ! 196: EvScreen ! 197: This structure is used by the ev driver. ! 198: It holds information about a single screen: how much private shmem it owns, ! 199: where its private shmem region starts, its global bounds and four procedure ! 200: vectors. This structure is allocated by the ev driver and is filled in ! 201: when a driver calls ev_register_screen(). ! 202: ******************************************************************************/ ! 203: ! 204: typedef volatile struct _evScreen { ! 205: id instance; /* Driver instance owning this screen. */ ! 206: void *shmemPtr; /* Ptr to private shmem (if non-zero size) */ ! 207: int shmemSize; /* Size of private shmem */ ! 208: Bounds bounds; /* Screen's bounds in device coordinates */ ! 209: } EvScreen; ! 210: ! 211: /* ! 212: * We maintain a queue of EventSrc instances attached to the Event ! 213: * Driver. These sources are dynamically checked in with the Event ! 214: * Driver. When the driver is closed (as on Window Server exit) we ! 215: * post a relinquishOwnership:client message to the drivers. ! 216: */ ! 217: typedef struct { ! 218: id eventSrc; ! 219: } eventSrcInfo; ! 220: ! 221: typedef struct { ! 222: eventSrcInfo info; ! 223: queue_chain_t link; ! 224: } attachedEventSrc; ! 225: ! 226: // No-op XPR stuff ! 227: #define xpr_ev_oc(x, a, b, c, d, e) ! 228: #define xpr_ev_shmemalloc(x, a, b, c, d, e) ! 229: #define xpr_ev_shmemlock(x, a, b, c, d, e) ! 230: #define xpr_ev_regscr(x, a, b, c, d, e) ! 231: #define xpr_ev_cursor(x, a, b, c, d, e) ! 232: #define xpr_ev_keybd(x, a, b, c, d, e) ! 233: #define xpr_evsrc(x, a, b, c, d, e) ! 234: #define xpr_ev_post(x, a, b, c, d, e) ! 235: #define xpr_ev_dspy(x, a, b, c, d, e) ! 236: ! 237: #endif /* _PPC_DEV_EV_PRIVATE_ */ ! 238: ! 239: #endif /* DRIVER_PRIVATE */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.