X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Finclude%2Fapi_drv_common.h;h=e1bb3f373cc7bbe408224a1dcb20a677655b6e26;hb=HEAD;hp=59bef5fed1de64fa18d6901c3a0db4e9c642a901;hpb=15442765f459f04d9bcd6eac6726221272cc0a96;p=tpg%2Facess2.git diff --git a/Kernel/include/api_drv_common.h b/Kernel/include/api_drv_common.h deleted file mode 100644 index 59bef5fe..00000000 --- a/Kernel/include/api_drv_common.h +++ /dev/null @@ -1,141 +0,0 @@ -/** - * \file api_drv_common.h - * \brief Common Driver Interface Definitions - * \author John Hodge (thePowersGang) - * - * \section Introduction - * There are two ways Acess drivers can communicate with userspace - * applications, both are through the VFS. The first is by exposing a - * device as a file buffer, the second is by sending commands via the - * ioctl() system call. - * All drivers in Acess must at least conform to the specifcation in this - * file (even if it is just implementing eTplDrv_IOCtl.DRV_IOCTL_TYPE and - * returning eTplDrv_Type.DRV_TYPE_NULL, however, doing so is discouraged) - * - * \section ioctls Core IOCtl calls - * As said, the core Acess driver specifcation defines specific IOCtl calls - * that all drivers should implement. The four core IOCtls (defined in - * ::eTplDrv_IOCtl) allow another binary (wether it be a user-mode application - * or another driver) to tell what type of device a driver provides, the - * basic identifcation of the driver (4 character ID and BCD version number) - * and be able to use externally standardised calls that may not have - * standardised call numbers. - * NOTE: All ioctl calls WILL return -1 if the driver ran into an error - * of its own fault while executing the call. If the user was at fault - * (e.g. by passing a bad buffer) the call will return -2. - * - * \section types Driver Types - * When the eTplDrv_IOCtl.DRV_IOCTL_TYPE call is made, the driver should - * return the relevant entry in the ::eTplDrv_Type enumeration that describes - * what sub-specifcation (and hence, what device type) it implements. - * These device types are described in their own files, which are liked - * from their entries in ::eTplDrv_Type. - */ -#ifndef _API_DRV_COMMON_H -#define _API_DRV_COMMON_H - -/** - * \enum eTplDrv_IOCtl - * \brief Common IOCtl Calls - */ -enum eTplDrv_IOCtl { - /** - * ioctl(...) - * \brief Get driver type - * \return The relevant entry from ::eTplDrv_Type - */ - DRV_IOCTL_TYPE, - - /** - * ioctl(..., char *dest[32]) - * \brief Get driver identifier string - * \return 0 on no error - * - * This call sets the 32-byte array \a dest to the drivers 31 charater - * identifier. This identifier must be unique to the driver series. - */ - DRV_IOCTL_IDENT, - - /** - * ioctl(...) - * \brief Get driver version number - * \return 24-bit BCD version number (2.2.2) - * - * This call returns the 6-digit (2 major, 2 minor, 2 patch) version - * number of the driver. - */ - DRV_IOCTL_VERSION, - - /** - * ioctl(..., char *name) - * \brief Get a IOCtl call ID from a symbolic name - * \return ID number of the call, or 0 if not found - * - * This call allows user applications to not need to know the ID numbers - * of this driver's IOCtl calls by taking a string and returning the - * IOCtl call number associated with that method name. - */ - DRV_IOCTL_LOOKUP, - - /** - * \brief First non-reserved IOCtl number for driver extension - */ - DRV_IOCTL_USERMIN = 0x1000, -}; - -/** - * \brief eTplDrv_IOCtl.DRV_IOCTL_LOOKUP names for the core IOCtls - * These are the official lookup names of the core calls - */ -#define DRV_IOCTLNAMES "type", "ident", "version", "lookup" - -/** - * \brief Helper macro for the base IOCtl calls - * \param _type Type number from eTplDrv_Type to return - * \param _ident String of max 32-characters that identifies this driver - * \param _version Driver's 8.8.8 BCD version number - * \param _ioctls Pointer to the IOCtls string array - * \warning If you have DEBUG enabled in the calling file, this function - * will do LEAVE()s before returning, so make sure that the - * IOCtl function is ENTER()ed when using debug with this macro - * - * Usage: (Id is the IOCtl call ID) - * \code - * switch(Id) - * { - * BASE_IOCTLS(DRV_TYPE_MISC, "Ident", 0x100, csaIOCtls) - * // Your IOCtls go here, starting at index 4 - * } - * \endcode - */ -#define BASE_IOCTLS(_type, _ident, _version, _ioctls) \ - case DRV_IOCTL_TYPE: LEAVE('i', (_type)); return (_type);\ - case DRV_IOCTL_IDENT: {\ - int tmp = ModUtil_SetIdent(Data, (_ident));\ - LEAVE('i', tmp); return tmp;\ - }\ - case DRV_IOCTL_VERSION: LEAVE('x', (_version)); return (_version);\ - case DRV_IOCTL_LOOKUP:{\ - int tmp = ModUtil_LookupString( _ioctls, (const char*)Data );\ - LEAVE('i', tmp);\ - return tmp;\ - } - -/** - * \enum eTplDrv_Type - * \brief Driver Types returned by DRV_IOCTL_TYPE - */ -enum eTplDrv_Type { - DRV_TYPE_NULL, //!< NULL Type - Custom Interface - DRV_TYPE_MISC, //!< Miscelanious Compilant - Supports the core calls - DRV_TYPE_TERMINAL, //!< Terminal - see api_drv_terminal.h - DRV_TYPE_VIDEO, //!< Video - see api_drv_video.h - DRV_TYPE_SOUND, //!< Audio - DRV_TYPE_DISK, //!< Disk - see api_drv_disk.h - DRV_TYPE_KEYBOARD, //!< Keyboard - see api_drv_keyboard.h - DRV_TYPE_MOUSE, //!< Mouse - DRV_TYPE_JOYSTICK, //!< Joystick / Gamepad - DRV_TYPE_NETWORK //!< Network Device - see api_drv_network.h -}; - -#endif