home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / programming / oslib / oslib_1 / OSLib / Computer / h / freeway < prev    next >
Encoding:
Text File  |  1995-06-22  |  9.0 KB  |  284 lines

  1. #ifndef freeway_H
  2. #define freeway_H
  3.  
  4. /* C header file for Freeway
  5.  * written by DefMod (Jun 20 1995) on Thu Jun 22 12:12:41 1995
  6.  * Jonathan Coxhead, Acorn Computers Ltd
  7.  */
  8.  
  9. #ifndef types_H
  10. #include "types.h"
  11. #endif
  12.  
  13. #ifndef os_H
  14. #include "os.h"
  15. #endif
  16.  
  17. /**********************************
  18.  * SWI names and SWI reason codes *
  19.  **********************************/
  20. #undef  Freeway_Register
  21. #define Freeway_Register                        0x47A80
  22. #undef  XFreeway_Register
  23. #define XFreeway_Register                       0x67A80
  24. #undef  Freeway_Write
  25. #define Freeway_Write                           0x47A81
  26. #undef  XFreeway_Write
  27. #define XFreeway_Write                          0x67A81
  28. #undef  Freeway_Read
  29. #define Freeway_Read                            0x47A82
  30. #undef  XFreeway_Read
  31. #define XFreeway_Read                           0x67A82
  32. #undef  Freeway_Enumerate
  33. #define Freeway_Enumerate                       0x47A83
  34. #undef  XFreeway_Enumerate
  35. #define XFreeway_Enumerate                      0x67A83
  36. #undef  Service_FreewayStarting
  37. #define Service_FreewayStarting                 0x95
  38. #undef  Service_FreewayTerminating
  39. #define Service_FreewayTerminating              0x96
  40. #undef  UpCall_Freeway
  41. #define UpCall_Freeway                          0xC
  42.  
  43. /********************
  44.  * Type definitions *
  45.  ********************/
  46. typedef int freeway_object_type;
  47.  
  48. typedef bits freeway_interest_flags;
  49.  
  50. typedef bits freeway_object_flags;
  51.  
  52. typedef bits freeway_read_flags;
  53.  
  54. typedef bits freeway_enumerate_flags;
  55.  
  56. typedef bits freeway_starting_flags;
  57.  
  58. typedef bits freeway_terminating_flags;
  59.  
  60. typedef int freeway_upcall_reason;
  61.  
  62. /************************
  63.  * Constant definitions *
  64.  ************************/
  65. #define freeway_TYPE_DISC                       ((freeway_object_type) 0x1u)
  66. #define freeway_TYPE_PRINTER                    ((freeway_object_type) 0x2u)
  67. #define freeway_TYPE_HOST                       ((freeway_object_type) 0x5u)
  68. #define freeway_INTEREST_REGISTER               ((freeway_interest_flags) 0x0u)
  69. #define freeway_INTEREST_DEREGISTER             ((freeway_interest_flags) 0x1u)
  70. #define freeway_INTEREST_UNAUTHENTICATED        ((freeway_interest_flags) 0x0u)
  71. #define freeway_INTEREST_AUTHENTICATED          ((freeway_interest_flags) 0x2u)
  72. #define freeway_OBJECT_ADD                      ((freeway_object_flags) 0x0u)
  73. #define freeway_OBJECT_REMOVE                   ((freeway_object_flags) 0x1u)
  74. #define freeway_OBJECT_UNAUTHENTICATED          ((freeway_object_flags) 0x0u)
  75. #define freeway_OBJECT_AUTHENTICATED            ((freeway_object_flags) 0x2u)
  76. #define freeway_READ_GIVEN_AUTHENTICATION       ((freeway_read_flags) 0x1u)
  77. #define freeway_NO_MORE                         (-1)
  78. #define freeway_ENUMERATE_AUTHENTICATED         ((freeway_enumerate_flags) 0x1u)
  79. #define freeway_OBJECT_ADDED                    ((freeway_upcall_reason) 0x0u)
  80. #define freeway_OBJECT_REMOVED                  ((freeway_upcall_reason) 0x1u)
  81. #define freeway_OBJECT_CHANGED                  ((freeway_upcall_reason) 0x2u)
  82. #define freeway_OBJECT_DELETED                  ((freeway_upcall_reason) 0x3u)
  83.  
  84. /*************************
  85.  * Function declarations *
  86.  *************************/
  87.  
  88. #ifdef __cplusplus
  89.    extern "C" {
  90. #endif
  91.  
  92. /* ------------------------------------------------------------------------
  93.  * Function:      freeway_register()
  94.  *
  95.  * Description:   Registers/deregisters interest in objects of a given
  96.  *                Freeway type
  97.  *
  98.  * Input:         flags - value of R0 on entry
  99.  *                type - value of R1 on entry
  100.  *                authentication - value of R2 on entry
  101.  *
  102.  * Other notes:   Calls SWI 0x47A80.
  103.  */
  104.  
  105. extern os_error *xfreeway_register (freeway_interest_flags flags,
  106.       freeway_object_type type,
  107.       int authentication);
  108. __swi (0x47A80) void freeway_register (freeway_interest_flags flags,
  109.       freeway_object_type type,
  110.       int authentication);
  111.  
  112. /* ------------------------------------------------------------------------
  113.  * Function:      freeway_write()
  114.  *
  115.  * Description:   Adds/removes an object of a given type
  116.  *
  117.  * Input:         flags - value of R0 on entry
  118.  *                type - value of R1 on entry
  119.  *                obj_name - value of R2 on entry
  120.  *                size - value of R3 on entry
  121.  *                desc - value of R4 on entry
  122.  *                authentication - value of R5 on entry
  123.  *
  124.  * Other notes:   Calls SWI 0x47A81.
  125.  */
  126.  
  127. extern os_error *xfreeway_write (freeway_object_flags flags,
  128.       freeway_object_type type,
  129.       char const *obj_name,
  130.       int size,
  131.       char const *desc,
  132.       int authentication);
  133. extern void freeway_write (freeway_object_flags flags,
  134.       freeway_object_type type,
  135.       char const *obj_name,
  136.       int size,
  137.       char const *desc,
  138.       int authentication);
  139.  
  140. /* ------------------------------------------------------------------------
  141.  * Function:      freeway_read()
  142.  *
  143.  * Description:   Reads attributes of an object
  144.  *
  145.  * Input:         flags - value of R0 on entry
  146.  *                type - value of R1 on entry
  147.  *                obj_name - value of R2 on entry
  148.  *                size - value of R3 on entry
  149.  *                desc - value of R4 on entry
  150.  *                authentication - value of R5 on entry
  151.  *
  152.  * Output:        size_out - value of R3 on exit (X version only)
  153.  *                ip_addr - value of R5 on exit
  154.  *
  155.  * Returns:       R3 (non-X version only)
  156.  *
  157.  * Other notes:   Calls SWI 0x47A82.
  158.  */
  159.  
  160. extern os_error *xfreeway_read (freeway_read_flags flags,
  161.       freeway_object_type type,
  162.       char const *obj_name,
  163.       int size,
  164.       char *desc,
  165.       int authentication,
  166.       int *size_out,
  167.       bits *ip_addr);
  168. extern int freeway_read (freeway_read_flags flags,
  169.       freeway_object_type type,
  170.       char const *obj_name,
  171.       int size,
  172.       char *desc,
  173.       int authentication,
  174.       bits *ip_addr);
  175.  
  176. /* ------------------------------------------------------------------------
  177.  * Function:      freeway_enumerate()
  178.  *
  179.  * Description:   Enumerates objects of a given type
  180.  *
  181.  * Input:         flags - value of R0 on entry
  182.  *                type - value of R1 on entry
  183.  *                obj_name_size - value of R2 on entry
  184.  *                obj_name - value of R3 on entry
  185.  *                desc_size - value of R4 on entry
  186.  *                desc - value of R5 on entry
  187.  *                context - value of R7 on entry
  188.  *                authentication - value of R8 on entry
  189.  *
  190.  * Output:        obj_name_size_out - value of R2 on exit
  191.  *                desc_size_out - value of R4 on exit
  192.  *                ip_addr - value of R6 on exit
  193.  *                context_out - value of R7 on exit (X version only)
  194.  *
  195.  * Returns:       R7 (non-X version only)
  196.  *
  197.  * Other notes:   Calls SWI 0x47A83 with R6 = 0x0.
  198.  */
  199.  
  200. extern os_error *xfreeway_enumerate (freeway_enumerate_flags flags,
  201.       freeway_object_type type,
  202.       int obj_name_size,
  203.       char *obj_name,
  204.       int desc_size,
  205.       char *desc,
  206.       int context,
  207.       int authentication,
  208.       int *obj_name_size_out,
  209.       int *desc_size_out,
  210.       bits *ip_addr,
  211.       int *context_out);
  212. extern int freeway_enumerate (freeway_enumerate_flags flags,
  213.       freeway_object_type type,
  214.       int obj_name_size,
  215.       char *obj_name,
  216.       int desc_size,
  217.       char *desc,
  218.       int context,
  219.       int authentication,
  220.       int *obj_name_size_out,
  221.       int *desc_size_out,
  222.       bits *ip_addr);
  223.  
  224. /* ------------------------------------------------------------------------
  225.  * Function:      service_freeway_starting()
  226.  *
  227.  * Description:   Freeway is starting up
  228.  *
  229.  * Input:         flags - value of R2 on entry
  230.  *
  231.  * Other notes:   Calls SWI 0x30 with R1 = 0x95.
  232.  */
  233.  
  234. extern os_error *xservice_freeway_starting (freeway_starting_flags flags);
  235. extern void service_freeway_starting (freeway_starting_flags flags);
  236.  
  237. /* ------------------------------------------------------------------------
  238.  * Function:      service_freeway_terminating()
  239.  *
  240.  * Description:   Freeway is terminating
  241.  *
  242.  * Input:         flags - value of R2 on entry
  243.  *
  244.  * Other notes:   Calls SWI 0x30 with R1 = 0x96.
  245.  */
  246.  
  247. extern os_error *xservice_freeway_terminating (freeway_terminating_flags flags);
  248. extern void service_freeway_terminating (freeway_terminating_flags flags);
  249.  
  250. /* ------------------------------------------------------------------------
  251.  * Function:      upcall_freeway()
  252.  *
  253.  * Description:   Warns that an object has been added or changed, removed
  254.  *                (by the holder), or deleted (by Freeway)
  255.  *
  256.  * Input:         reason - value of R1 on entry
  257.  *                type - value of R2 on entry
  258.  *                obj_name - value of R3 on entry
  259.  *                desc_size - value of R4 on entry
  260.  *                desc - value of R5 on entry
  261.  *                ip_addr - value of R6 on entry
  262.  *
  263.  * Other notes:   Calls SWI 0x33 with R0 = 0xC.
  264.  */
  265.  
  266. extern os_error *xupcall_freeway (freeway_upcall_reason reason,
  267.       freeway_object_type type,
  268.       char const *obj_name,
  269.       int desc_size,
  270.       char const *desc,
  271.       bits ip_addr);
  272. extern void upcall_freeway (freeway_upcall_reason reason,
  273.       freeway_object_type type,
  274.       char const *obj_name,
  275.       int desc_size,
  276.       char const *desc,
  277.       bits ip_addr);
  278.  
  279. #ifdef __cplusplus
  280.    }
  281. #endif
  282.  
  283. #endif
  284.