home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 4 / hacker04 / 04_HACK04.ISO / darwin / darwinx86.iso / usr / include / mach / i386 / mach_i386_server.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-30  |  5.7 KB  |  243 lines

  1. #ifndef    _mach_i386_server_
  2. #define    _mach_i386_server_
  3.  
  4. /* Module mach_i386 */
  5.  
  6. #include <string.h>
  7. #include <mach/ndr.h>
  8. #include <mach/boolean.h>
  9. #include <mach/kern_return.h>
  10. #include <mach/notify.h>
  11. #include <mach/mach_types.h>
  12. #include <mach/message.h>
  13. #include <mach/mig_errors.h>
  14. #include <mach/port.h>
  15.  
  16. #ifdef AUTOTEST
  17. #ifndef FUNCTION_PTR_T
  18. #define FUNCTION_PTR_T
  19. typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
  20. typedef struct {
  21.         char            *name;
  22.         function_ptr_t  function;
  23. } function_table_entry;
  24. typedef function_table_entry     *function_table_t;
  25. #endif /* FUNCTION_PTR_T */
  26. #endif /* AUTOTEST */
  27.  
  28. #ifndef    mach_i386_MSG_COUNT
  29. #define    mach_i386_MSG_COUNT    5
  30. #endif    /* mach_i386_MSG_COUNT */
  31.  
  32. #include <mach/std_types.h>
  33. #include <kern/ipc_mig.h>
  34. #include <mach/mach_types.h>
  35. #include <device/device_types.h>
  36. #include <mach/i386/mach_i386_types.h>
  37.  
  38. #ifdef __BeforeMigServerHeader
  39. __BeforeMigServerHeader
  40. #endif /* __BeforeMigServerHeader */
  41.  
  42. /* typedefs for all requests */
  43.  
  44.     typedef struct {
  45.         mach_msg_header_t Head;
  46.         /* start of the kernel processed data */
  47.         mach_msg_body_t msgh_body;
  48.         mach_msg_port_descriptor_t device;
  49.         /* end of the kernel processed data */
  50.     } __Request__i386_io_port_add_t;
  51.  
  52.     typedef struct {
  53.         mach_msg_header_t Head;
  54.         /* start of the kernel processed data */
  55.         mach_msg_body_t msgh_body;
  56.         mach_msg_port_descriptor_t device;
  57.         /* end of the kernel processed data */
  58.     } __Request__i386_io_port_remove_t;
  59.  
  60.     typedef struct {
  61.         mach_msg_header_t Head;
  62.     } __Request__i386_io_port_list_t;
  63.  
  64.     typedef struct {
  65.         mach_msg_header_t Head;
  66.         /* start of the kernel processed data */
  67.         mach_msg_body_t msgh_body;
  68.         mach_msg_ool_descriptor_t desc_list;
  69.         /* end of the kernel processed data */
  70.         NDR_record_t NDR;
  71.         int first_selector;
  72.         mach_msg_type_number_t desc_listCnt;
  73.     } __Request__i386_set_ldt_t;
  74.  
  75.     typedef struct {
  76.         mach_msg_header_t Head;
  77.         NDR_record_t NDR;
  78.         int first_selector;
  79.         int selector_count;
  80.     } __Request__i386_get_ldt_t;
  81.  
  82.  
  83. /* union of all requests */
  84.  
  85. union __RequestUnion__mach_i386_subsystem {
  86.     __Request__i386_io_port_add_t Request_i386_io_port_add;
  87.     __Request__i386_io_port_remove_t Request_i386_io_port_remove;
  88.     __Request__i386_io_port_list_t Request_i386_io_port_list;
  89.     __Request__i386_set_ldt_t Request_i386_set_ldt;
  90.     __Request__i386_get_ldt_t Request_i386_get_ldt;
  91. };
  92. /* typedefs for all replies */
  93.  
  94.     typedef struct {
  95.         mach_msg_header_t Head;
  96.         NDR_record_t NDR;
  97.         kern_return_t RetCode;
  98.     } __Reply__i386_io_port_add_t;
  99.  
  100.     typedef struct {
  101.         mach_msg_header_t Head;
  102.         NDR_record_t NDR;
  103.         kern_return_t RetCode;
  104.     } __Reply__i386_io_port_remove_t;
  105.  
  106.     typedef struct {
  107.         mach_msg_header_t Head;
  108.         /* start of the kernel processed data */
  109.         mach_msg_body_t msgh_body;
  110.         mach_msg_ool_ports_descriptor_t device_list;
  111.         /* end of the kernel processed data */
  112.         NDR_record_t NDR;
  113.         mach_msg_type_number_t device_listCnt;
  114.     } __Reply__i386_io_port_list_t;
  115.  
  116.     typedef struct {
  117.         mach_msg_header_t Head;
  118.         NDR_record_t NDR;
  119.         kern_return_t RetCode;
  120.     } __Reply__i386_set_ldt_t;
  121.  
  122.     typedef struct {
  123.         mach_msg_header_t Head;
  124.         /* start of the kernel processed data */
  125.         mach_msg_body_t msgh_body;
  126.         mach_msg_ool_descriptor_t desc_list;
  127.         /* end of the kernel processed data */
  128.         NDR_record_t NDR;
  129.         mach_msg_type_number_t desc_listCnt;
  130.     } __Reply__i386_get_ldt_t;
  131.  
  132.  
  133. /* union of all replies */
  134.  
  135. union __ReplyUnion__mach_i386_subsystem {
  136.     __Reply__i386_io_port_add_t Reply_i386_io_port_add;
  137.     __Reply__i386_io_port_remove_t Reply_i386_io_port_remove;
  138.     __Reply__i386_io_port_list_t Reply_i386_io_port_list;
  139.     __Reply__i386_set_ldt_t Reply_i386_set_ldt;
  140.     __Reply__i386_get_ldt_t Reply_i386_get_ldt;
  141. };
  142.  
  143. /* Routine i386_io_port_add */
  144. #ifdef    mig_external
  145. mig_external
  146. #else
  147. extern
  148. #endif    /* mig_external */
  149. kern_return_t i386_io_port_add
  150. (
  151.     thread_act_t target_act,
  152.     device_t device
  153. );
  154.  
  155. /* Routine i386_io_port_remove */
  156. #ifdef    mig_external
  157. mig_external
  158. #else
  159. extern
  160. #endif    /* mig_external */
  161. kern_return_t i386_io_port_remove
  162. (
  163.     thread_act_t target_act,
  164.     device_t device
  165. );
  166.  
  167. /* Routine i386_io_port_list */
  168. #ifdef    mig_external
  169. mig_external
  170. #else
  171. extern
  172. #endif    /* mig_external */
  173. kern_return_t i386_io_port_list
  174. (
  175.     thread_act_t target_act,
  176.     device_list_t *device_list,
  177.     mach_msg_type_number_t *device_listCnt
  178. );
  179.  
  180. /* Routine i386_set_ldt */
  181. #ifdef    mig_external
  182. mig_external
  183. #else
  184. extern
  185. #endif    /* mig_external */
  186. kern_return_t i386_set_ldt
  187. (
  188.     thread_act_t target_act,
  189.     int first_selector,
  190.     descriptor_list_t desc_list,
  191.     mach_msg_type_number_t desc_listCnt
  192. );
  193.  
  194. /* Routine i386_get_ldt */
  195. #ifdef    mig_external
  196. mig_external
  197. #else
  198. extern
  199. #endif    /* mig_external */
  200. kern_return_t i386_get_ldt
  201. (
  202.     thread_act_t target_act,
  203.     int first_selector,
  204.     int selector_count,
  205.     descriptor_list_t *desc_list,
  206.     mach_msg_type_number_t *desc_listCnt
  207. );
  208.  
  209. extern boolean_t mach_i386_server(
  210.         mach_msg_header_t *InHeadP,
  211.         mach_msg_header_t *OutHeadP);
  212.  
  213. extern mig_routine_t mach_i386_server_routine(
  214.         mach_msg_header_t *InHeadP);
  215.  
  216.  
  217. /* Description of this subsystem, for use in direct RPC */
  218. extern const struct mach_i386_subsystem {
  219.     struct subsystem *    subsystem;    /* Reserved for system use */
  220.     mach_msg_id_t    start;    /* Min routine number */
  221.     mach_msg_id_t    end;    /* Max routine number + 1 */
  222.     unsigned int    maxsize;    /* Max msg size */
  223.     vm_address_t    base_addr;    /* Base ddress */
  224.     struct routine_descriptor    /*Array of routine descriptors */
  225.         routine[5];
  226. } mach_i386_subsystem;
  227.  
  228.  
  229. #ifndef subsystem_to_name_map_mach_i386
  230. #define subsystem_to_name_map_mach_i386 \
  231.     { "i386_io_port_add", 3800 },\
  232.     { "i386_io_port_remove", 3801 },\
  233.     { "i386_io_port_list", 3802 },\
  234.     { "i386_set_ldt", 3803 },\
  235.     { "i386_get_ldt", 3804 }
  236. #endif
  237.  
  238. #ifdef __AfterMigServerHeader
  239. __AfterMigServerHeader
  240. #endif /* __AfterMigServerHeader */
  241.  
  242. #endif     /* _mach_i386_server_ */
  243.