home *** CD-ROM | disk | FTP | other *** search
/ RISC DISC 1 / RISC_DISC_1.iso / pd_share / code / oslib / h / devicefs < prev    next >
Encoding:
Text File  |  1994-09-26  |  21.3 KB  |  695 lines

  1. #ifndef devicefs_H
  2. #define devicefs_H
  3.  
  4. /* C header file for DeviceFS
  5.  * written by DefMod (Sep 16 1994) on Mon Sep 26 16:38:16 1994
  6.  * Copyright © Acorn Computers Ltd, 1994
  7.  */
  8.  
  9. /*************************************************************************
  10.  * This source file was written by Acorn Computers Limited. It is part   *
  11.  * of the OSLib library for writing applications for RISC OS. It may be  *
  12.  * used freely in the creation of programs for RISC OS.                  *
  13.  *************************************************************************/
  14.  
  15. #ifndef types_H
  16.    #include "types.h"
  17. #endif
  18.  
  19. #ifndef os_H
  20.    #include "os.h"
  21. #endif
  22.  
  23. /**********************************
  24.  * SWI names and SWI reason codes *
  25.  **********************************/
  26. #undef  DeviceFS_Register
  27. #define DeviceFS_Register                       0x42740
  28. #undef  XDeviceFS_Register
  29. #define XDeviceFS_Register                      0x62740
  30. #undef  DeviceFS_Deregister
  31. #define DeviceFS_Deregister                     0x42741
  32. #undef  XDeviceFS_Deregister
  33. #define XDeviceFS_Deregister                    0x62741
  34. #undef  DeviceFS_RegisterObjects
  35. #define DeviceFS_RegisterObjects                0x42742
  36. #undef  XDeviceFS_RegisterObjects
  37. #define XDeviceFS_RegisterObjects               0x62742
  38. #undef  DeviceFS_DeregisterObjects
  39. #define DeviceFS_DeregisterObjects              0x42743
  40. #undef  XDeviceFS_DeregisterObjects
  41. #define XDeviceFS_DeregisterObjects             0x62743
  42. #undef  DeviceFS_CallDevice
  43. #define DeviceFS_CallDevice                     0x42744
  44. #undef  XDeviceFS_CallDevice
  45. #define XDeviceFS_CallDevice                    0x62744
  46. #undef  DeviceFSCallDevice_Initialise
  47. #define DeviceFSCallDevice_Initialise           0x0
  48. #undef  DeviceFSCallDevice_Terminate
  49. #define DeviceFSCallDevice_Terminate            0x1
  50. #undef  DeviceFSCallDevice_TxWakeUp
  51. #define DeviceFSCallDevice_TxWakeUp             0x2
  52. #undef  DeviceFSCallDevice_RxWakeUp
  53. #define DeviceFSCallDevice_RxWakeUp             0x3
  54. #undef  DeviceFSCallDevice_RxSleep
  55. #define DeviceFSCallDevice_RxSleep              0x4
  56. #undef  DeviceFSCallDevice_EnumDir
  57. #define DeviceFSCallDevice_EnumDir              0x5
  58. #undef  DeviceFSCallDevice_TxCreateBuffer
  59. #define DeviceFSCallDevice_TxCreateBuffer       0x6
  60. #undef  DeviceFSCallDevice_RxCreateBuffer
  61. #define DeviceFSCallDevice_RxCreateBuffer       0x7
  62. #undef  DeviceFSCallDevice_Halt
  63. #define DeviceFSCallDevice_Halt                 0x8
  64. #undef  DeviceFSCallDevice_Resume
  65. #define DeviceFSCallDevice_Resume               0x9
  66. #undef  DeviceFSCallDevice_EndOfData
  67. #define DeviceFSCallDevice_EndOfData            0xA
  68. #undef  DeviceFSCallDevice_StreamCreated
  69. #define DeviceFSCallDevice_StreamCreated        0xB
  70. #undef  DeviceFS_Threshold
  71. #define DeviceFS_Threshold                      0x42745
  72. #undef  XDeviceFS_Threshold
  73. #define XDeviceFS_Threshold                     0x62745
  74. #undef  DeviceFS_ReceivedChar
  75. #define DeviceFS_ReceivedChar                   0x42746
  76. #undef  XDeviceFS_ReceivedChar
  77. #define XDeviceFS_ReceivedChar                  0x62746
  78. #undef  DeviceFS_TransmitChar
  79. #define DeviceFS_TransmitChar                   0x42747
  80. #undef  XDeviceFS_TransmitChar
  81. #define XDeviceFS_TransmitChar                  0x62747
  82. #undef  Service_DeviceFSStarting
  83. #define Service_DeviceFSStarting                0x70
  84. #undef  Service_DeviceFSDying
  85. #define Service_DeviceFSDying                   0x71
  86. #undef  Service_DeviceDead
  87. #define Service_DeviceDead                      0x79
  88. #undef  Service_DeviceFSCloseRequest
  89. #define Service_DeviceFSCloseRequest            0x81
  90. #undef  UpCall_StreamCreated
  91. #define UpCall_StreamCreated                    0xA
  92. #undef  UpCall_StreamClosed
  93. #define UpCall_StreamClosed                     0xB
  94. #undef  Event_DeviceOverrun
  95. #define Event_DeviceOverrun                     0x16
  96.  
  97. /************************************
  98.  * Structure and union declarations *
  99.  ************************************/
  100. typedef struct devicefs_d_                      *devicefs_d;
  101. typedef struct devicefs_s_                      *devicefs_s;
  102. typedef struct devicefs_h_                      *devicefs_h;
  103. typedef struct devicefs_device                  devicefs_device;
  104. typedef struct devicefs_device_list             devicefs_device_list;
  105.  
  106. /********************
  107.  * Type definitions *
  108.  ********************/
  109. struct devicefs_device
  110.    {  int name_offset;
  111.       bits flags;
  112.       bits rx_flags;
  113.       int rx_buffer_size;
  114.       bits tx_flags;
  115.       int tx_buffer_size;
  116.       int reserved;
  117.    };
  118.  
  119. struct devicefs_device_list
  120.    {  devicefs_device d [UNKNOWN];
  121.    };
  122.  
  123. #define devicefs_DEVICE_LIST(N) \
  124.    struct \
  125.       {  devicefs_device d [N]; \
  126.       }
  127.  
  128. #define devicefs_SIZEOF_DEVICE_LIST(N) \
  129.    ((N)*sizeof ((devicefs_device_list *) NULL)->d)
  130.  
  131. /************************
  132.  * Constant definitions *
  133.  ************************/
  134. #define devicefs_DEVICE_BUFFERED                0x1u
  135. #define devicefs_DEVICE_USES_PATH_VAR           0x2u
  136. #define devicefs_REGISTER_BLOCK_DEVICE          0x1u
  137. #define devicefs_REGISTER_FULL_DUPLEX           0x2u
  138.  
  139. /*************************
  140.  * Function declarations *
  141.  *************************/
  142.  
  143. #ifdef __cplusplus
  144.    extern "C" {
  145. #endif
  146.  
  147. /*************************************************************
  148.  * NOTE: The following functions provide direct access to    *
  149.  *       the SWI's noted in the function description.        *
  150.  *       Please read the relevant PRM section for more       *
  151.  *       information on their input/output parameters.       *
  152.  *************************************************************/
  153.  
  154. /* ------------------------------------------------------------------------
  155.  * Function:      devicefs_register()
  156.  *
  157.  * Description:   Registers a device driver and its associated devices with
  158.  *                DeviceFS
  159.  *
  160.  * Input:         flags - value of R0 on entry
  161.  *                devices - value of R1 on entry
  162.  *                driver - value of R2 on entry
  163.  *                handle - value of R3 on entry
  164.  *                workspace - value of R4 on entry
  165.  *                validation - value of R5 on entry
  166.  *                rx_limit - value of R6 on entry
  167.  *                tx_limit - value of R7 on entry
  168.  *
  169.  * Output:        d - value of R0 on exit (X version only)
  170.  *
  171.  * Returns:       R0 (non-X version only)
  172.  *
  173.  * Other notes:   Calls SWI 0x42740.
  174.  */
  175.  
  176. extern os_error *xdevicefs_register (bits flags,
  177.       devicefs_device_list *devices,
  178.       void *driver,
  179.       int handle,
  180.       void *workspace,
  181.       char *validation,
  182.       int rx_limit,
  183.       int tx_limit,
  184.       devicefs_d *d);
  185. extern devicefs_d devicefs_register (bits flags,
  186.       devicefs_device_list *devices,
  187.       void *driver,
  188.       int handle,
  189.       void *workspace,
  190.       char *validation,
  191.       int rx_limit,
  192.       int tx_limit);
  193.  
  194. /* ------------------------------------------------------------------------
  195.  * Function:      devicefs_deregister()
  196.  *
  197.  * Description:   Deregisters a device driver and all its devices from
  198.  *                DeviceFS
  199.  *
  200.  * Input:         d - value of R0 on entry
  201.  *
  202.  * Other notes:   Calls SWI 0x42741.
  203.  */
  204.  
  205. extern os_error *xdevicefs_deregister (devicefs_d d);
  206. extern void devicefs_deregister (devicefs_d d);
  207.  
  208. /* ------------------------------------------------------------------------
  209.  * Function:      devicefs_register_objects()
  210.  *
  211.  * Description:   Registers a list of additional devices with a device
  212.  *                driver
  213.  *
  214.  * Input:         d - value of R0 on entry
  215.  *                devices - value of R1 on entry
  216.  *
  217.  * Other notes:   Calls SWI 0x42742.
  218.  */
  219.  
  220. extern os_error *xdevicefs_register_objects (devicefs_d d,
  221.       devicefs_device_list *devices);
  222. extern void devicefs_register_objects (devicefs_d d,
  223.       devicefs_device_list *devices);
  224.  
  225. /* ------------------------------------------------------------------------
  226.  * Function:      devicefs_deregister_objects()
  227.  *
  228.  * Description:   Deregisters a device related to a particular device
  229.  *                driver
  230.  *
  231.  * Input:         d - value of R0 on entry
  232.  *                device_name - value of R1 on entry
  233.  *
  234.  * Other notes:   Calls SWI 0x42743.
  235.  */
  236.  
  237. extern os_error *xdevicefs_deregister_objects (devicefs_d d,
  238.       char *device_name);
  239. extern void devicefs_deregister_objects (devicefs_d d,
  240.       char *device_name);
  241.  
  242. /* ------------------------------------------------------------------------
  243.  * Function:      devicefscalldevice_initialise()
  244.  *
  245.  * Description:   Initialises a device
  246.  *
  247.  * Input:         d - value of R1 on entry
  248.  *                s - value of R2 on entry
  249.  *                flags - value of R3 on entry
  250.  *                decoded_special - value of R6 on entry
  251.  *
  252.  * Output:        h - value of R2 on exit (X version only)
  253.  *
  254.  * Returns:       R2 (non-X version only)
  255.  *
  256.  * Other notes:   Calls SWI 0x42744 with R0 = 0x0.
  257.  */
  258.  
  259. extern os_error *xdevicefscalldevice_initialise (devicefs_d d,
  260.       devicefs_s s,
  261.       bits flags,
  262.       byte *decoded_special,
  263.       devicefs_h *h);
  264. extern devicefs_h devicefscalldevice_initialise (devicefs_d d,
  265.       devicefs_s s,
  266.       bits flags,
  267.       byte *decoded_special);
  268.  
  269. /* ------------------------------------------------------------------------
  270.  * Function:      devicefscalldevice_terminate()
  271.  *
  272.  * Description:   Finalises a device
  273.  *
  274.  * Input:         d - value of R1 on entry
  275.  *                h - value of R2 on entry
  276.  *
  277.  * Other notes:   Calls SWI 0x42744 with R0 = 0x1.
  278.  */
  279.  
  280. extern os_error *xdevicefscalldevice_terminate (devicefs_d d,
  281.       devicefs_h h);
  282. extern void devicefscalldevice_terminate (devicefs_d d,
  283.       devicefs_h h);
  284.  
  285. /* ------------------------------------------------------------------------
  286.  * Function:      devicefscalldevice_tx_wake_up()
  287.  *
  288.  * Description:   Wakes a device up for transmission
  289.  *
  290.  * Input:         d - value of R1 on entry
  291.  *                h - value of R2 on entry
  292.  *
  293.  * Output:        woken_up - value of R0 on exit (X version only)
  294.  *
  295.  * Returns:       R0 (non-X version only)
  296.  *
  297.  * Other notes:   Calls SWI 0x42744 with R0 = 0x2.
  298.  */
  299.  
  300. extern os_error *xdevicefscalldevice_tx_wake_up (devicefs_d d,
  301.       devicefs_h h,
  302.       bool *woken_up);
  303. extern bool devicefscalldevice_tx_wake_up (devicefs_d d,
  304.       devicefs_h h);
  305.  
  306. /* ------------------------------------------------------------------------
  307.  * Function:      devicefscalldevice_rx_wake_up()
  308.  *
  309.  * Description:   Wakes a device up for reception
  310.  *
  311.  * Input:         d - value of R1 on entry
  312.  *                h - value of R2 on entry
  313.  *
  314.  * Other notes:   Calls SWI 0x42744 with R0 = 0x3.
  315.  */
  316.  
  317. extern os_error *xdevicefscalldevice_rx_wake_up (devicefs_d d,
  318.       devicefs_h h);
  319. extern void devicefscalldevice_rx_wake_up (devicefs_d d,
  320.       devicefs_h h);
  321.  
  322. /* ------------------------------------------------------------------------
  323.  * Function:      devicefscalldevice_rx_sleep()
  324.  *
  325.  * Description:   Puts a device to sleep from reception
  326.  *
  327.  * Input:         d - value of R1 on entry
  328.  *                h - value of R2 on entry
  329.  *
  330.  * Other notes:   Calls SWI 0x42744 with R0 = 0x4.
  331.  */
  332.  
  333. extern os_error *xdevicefscalldevice_rx_sleep (devicefs_d d,
  334.       devicefs_h h);
  335. extern void devicefscalldevice_rx_sleep (devicefs_d d,
  336.       devicefs_h h);
  337.  
  338. /* ------------------------------------------------------------------------
  339.  * Function:      devicefscalldevice_enum_dir()
  340.  *
  341.  * Description:   Informs a device that a DeviceFS directory is being
  342.  *                enumerated
  343.  *
  344.  * Input:         d - value of R1 on entry
  345.  *                file_name - value of R2 on entry
  346.  *
  347.  * Other notes:   Calls SWI 0x42744 with R0 = 0x5.
  348.  */
  349.  
  350. extern os_error *xdevicefscalldevice_enum_dir (devicefs_d d,
  351.       char *file_name);
  352. extern void devicefscalldevice_enum_dir (devicefs_d d,
  353.       char *file_name);
  354.  
  355. /* ------------------------------------------------------------------------
  356.  * Function:      devicefscalldevice_tx_create_buffer()
  357.  *
  358.  * Description:   Informs a device that a buffer is being created for
  359.  *                transmission
  360.  *
  361.  * Input:         d - value of R1 on entry
  362.  *                h - value of R2 on entry
  363.  *                buffer_flags - value of R3 on entry
  364.  *                size - value of R4 on entry
  365.  *                b - value of R5 on entry
  366.  *                threshold - value of R6 on entry
  367.  *
  368.  * Output:        buffer_flags_out - value of R3 on exit
  369.  *                size_out - value of R4 on exit
  370.  *                b_out - value of R5 on exit (X version only)
  371.  *                threshold_out - value of R6 on exit
  372.  *
  373.  * Returns:       R5 (non-X version only)
  374.  *
  375.  * Other notes:   Calls SWI 0x42744 with R0 = 0x6.
  376.  */
  377.  
  378. extern os_error *xdevicefscalldevice_tx_create_buffer (devicefs_d d,
  379.       devicefs_h h,
  380.       bits buffer_flags,
  381.       int size,
  382.       buffer_b b,
  383.       int threshold,
  384.       bits *buffer_flags_out,
  385.       int *size_out,
  386.       buffer_b *b_out,
  387.       int *threshold_out);
  388. extern buffer_b devicefscalldevice_tx_create_buffer (devicefs_d d,
  389.       devicefs_h h,
  390.       bits buffer_flags,
  391.       int size,
  392.       buffer_b b,
  393.       int threshold,
  394.       bits *buffer_flags_out,
  395.       int *size_out,
  396.       int *threshold_out);
  397.  
  398. /* ------------------------------------------------------------------------
  399.  * Function:      devicefscalldevice_rx_create_buffer()
  400.  *
  401.  * Description:   Informs a device that a buffer is being created for
  402.  *                reception
  403.  *
  404.  * Input:         d - value of R1 on entry
  405.  *                h - value of R2 on entry
  406.  *                buffer_flags - value of R3 on entry
  407.  *                size - value of R4 on entry
  408.  *                b - value of R5 on entry
  409.  *                threshold - value of R6 on entry
  410.  *
  411.  * Output:        buffer_flags_out - value of R3 on exit
  412.  *                size_out - value of R4 on exit
  413.  *                b_out - value of R5 on exit (X version only)
  414.  *                threshold_out - value of R6 on exit
  415.  *
  416.  * Returns:       R5 (non-X version only)
  417.  *
  418.  * Other notes:   Calls SWI 0x42744 with R0 = 0x7.
  419.  */
  420.  
  421. extern os_error *xdevicefscalldevice_rx_create_buffer (devicefs_d d,
  422.       devicefs_h h,
  423.       bits buffer_flags,
  424.       int size,
  425.       buffer_b b,
  426.       int threshold,
  427.       bits *buffer_flags_out,
  428.       int *size_out,
  429.       buffer_b *b_out,
  430.       int *threshold_out);
  431. extern buffer_b devicefscalldevice_rx_create_buffer (devicefs_d d,
  432.       devicefs_h h,
  433.       bits buffer_flags,
  434.       int size,
  435.       buffer_b b,
  436.       int threshold,
  437.       bits *buffer_flags_out,
  438.       int *size_out,
  439.       int *threshold_out);
  440.  
  441. /* ------------------------------------------------------------------------
  442.  * Function:      devicefscalldevice_halt()
  443.  *
  444.  * Description:   Halts a device
  445.  *
  446.  * Input:         d - value of R1 on entry
  447.  *                h - value of R2 on entry
  448.  *
  449.  * Other notes:   Calls SWI 0x42744 with R0 = 0x8.
  450.  */
  451.  
  452. extern os_error *xdevicefscalldevice_halt (devicefs_d d,
  453.       devicefs_h h);
  454. extern void devicefscalldevice_halt (devicefs_d d,
  455.       devicefs_h h);
  456.  
  457. /* ------------------------------------------------------------------------
  458.  * Function:      devicefscalldevice_resume()
  459.  *
  460.  * Description:   Resumes a device
  461.  *
  462.  * Input:         d - value of R1 on entry
  463.  *                h - value of R2 on entry
  464.  *
  465.  * Other notes:   Calls SWI 0x42744 with R0 = 0x9.
  466.  */
  467.  
  468. extern os_error *xdevicefscalldevice_resume (devicefs_d d,
  469.       devicefs_h h);
  470. extern void devicefscalldevice_resume (devicefs_d d,
  471.       devicefs_h h);
  472.  
  473. /* ------------------------------------------------------------------------
  474.  * Function:      devicefscalldevice_end_of_data()
  475.  *
  476.  * Description:   Returns the end-of-data status of a device
  477.  *
  478.  * Input:         d - value of R1 on entry
  479.  *                h - value of R2 on entry
  480.  *
  481.  * Output:        end_of_data - value of R3 on exit (X version only)
  482.  *
  483.  * Returns:       R3 (non-X version only)
  484.  *
  485.  * Other notes:   Calls SWI 0x42744 with R0 = 0xA, R3 = 0xFFFFFFFF.
  486.  */
  487.  
  488. extern os_error *xdevicefscalldevice_end_of_data (devicefs_d d,
  489.       devicefs_h h,
  490.       bool *end_of_data);
  491. extern bool devicefscalldevice_end_of_data (devicefs_d d,
  492.       devicefs_h h);
  493.  
  494. /* ------------------------------------------------------------------------
  495.  * Function:      devicefscalldevice_stream_created()
  496.  *
  497.  * Description:   Informs a device that a stream has been created
  498.  *
  499.  * Input:         d - value of R1 on entry
  500.  *                h - value of R2 on entry
  501.  *                b - value of R3 on entry
  502.  *
  503.  * Other notes:   Calls SWI 0x42744 with R0 = 0xB.
  504.  */
  505.  
  506. extern os_error *xdevicefscalldevice_stream_created (devicefs_d d,
  507.       devicefs_h h,
  508.       buffer_b b);
  509. extern void devicefscalldevice_stream_created (devicefs_d d,
  510.       devicefs_h h,
  511.       buffer_b b);
  512.  
  513. /* ------------------------------------------------------------------------
  514.  * Function:      devicefs_threshold()
  515.  *
  516.  * Description:   Informs DeviceFS of the threshold value to use on
  517.  *                buffered devices
  518.  *
  519.  * Input:         s - value of R1 on entry
  520.  *                threshold - value of R2 on entry
  521.  *
  522.  * Other notes:   Calls SWI 0x42745.
  523.  */
  524.  
  525. extern os_error *xdevicefs_threshold (devicefs_s s,
  526.       int threshold);
  527. extern void devicefs_threshold (devicefs_s s,
  528.       int threshold);
  529.  
  530. /* ------------------------------------------------------------------------
  531.  * Function:      devicefs_received_char()
  532.  *
  533.  * Description:   Informs DeviceFS that a device has recieved a character
  534.  *
  535.  * Input:         b - value of R0 on entry
  536.  *                s - value of R1 on entry
  537.  *
  538.  * Output:        psr - processor status register on exit (X version only)
  539.  *
  540.  * Returns:       psr (non-X version only)
  541.  *
  542.  * Other notes:   Calls SWI 0x42746.
  543.  */
  544.  
  545. extern os_error *xdevicefs_received_char (byte b,
  546.       devicefs_s s,
  547.       bits *psr);
  548. extern bits devicefs_received_char (byte b,
  549.       devicefs_s s);
  550.  
  551. /* ------------------------------------------------------------------------
  552.  * Function:      devicefs_transmit_char()
  553.  *
  554.  * Description:   Informs DeviceFS that a device driver wants to transmit a
  555.  *                character
  556.  *
  557.  * Input:         s - value of R1 on entry
  558.  *
  559.  * Output:        b - value of R0 on exit
  560.  *                psr - processor status register on exit (X version only)
  561.  *
  562.  * Returns:       psr (non-X version only)
  563.  *
  564.  * Other notes:   Calls SWI 0x42747.
  565.  */
  566.  
  567. extern os_error *xdevicefs_transmit_char (devicefs_s s,
  568.       byte *b,
  569.       bits *psr);
  570. extern bits devicefs_transmit_char (devicefs_s s,
  571.       byte *b);
  572.  
  573. /* ------------------------------------------------------------------------
  574.  * Function:      service_device_fs_starting()
  575.  *
  576.  * Description:   DeviceFS is starting
  577.  *
  578.  * Other notes:   Calls SWI 0x30 with R1 = 0x70.
  579.  */
  580.  
  581. extern os_error *xservice_device_fs_starting (void);
  582. extern void service_device_fs_starting (void);
  583.  
  584. /* ------------------------------------------------------------------------
  585.  * Function:      service_device_fs_dying()
  586.  *
  587.  * Description:   DeviceFS is dying
  588.  *
  589.  * Other notes:   Calls SWI 0x30 with R0 = 0x0, R1 = 0x71.
  590.  */
  591.  
  592. extern os_error *xservice_device_fs_dying (void);
  593. extern void service_device_fs_dying (void);
  594.  
  595. /* ------------------------------------------------------------------------
  596.  * Function:      service_device_dead()
  597.  *
  598.  * Description:   Device has been killed by DeviceFS
  599.  *
  600.  * Input:         d - value of R2 on entry
  601.  *                device_name - value of R3 on entry
  602.  *
  603.  * Other notes:   Calls SWI 0x30 with R0 = 0x0, R1 = 0x79.
  604.  */
  605.  
  606. extern os_error *xservice_device_dead (devicefs_d d,
  607.       char *device_name);
  608. extern void service_device_dead (devicefs_d d,
  609.       char *device_name);
  610.  
  611. /* ------------------------------------------------------------------------
  612.  * Function:      service_device_fs_close_request()
  613.  *
  614.  * Description:   Opening a device which already has the maximum number of
  615.  *                streams open
  616.  *
  617.  * Input:         file - value of R2 on entry
  618.  *
  619.  * Output:        unclaimed - value of R1 on exit (X version only)
  620.  *
  621.  * Returns:       R1 (non-X version only)
  622.  *
  623.  * Other notes:   Calls SWI 0x30 with R1 = 0x81.
  624.  */
  625.  
  626. extern os_error *xservice_device_fs_close_request (os_f file,
  627.       bool *unclaimed);
  628. extern bool service_device_fs_close_request (os_f file);
  629.  
  630. /* ------------------------------------------------------------------------
  631.  * Function:      upcall_stream_created()
  632.  *
  633.  * Description:   Stream created
  634.  *
  635.  * Input:         d - value of R1 on entry
  636.  *                tx_stream - value of R2 on entry
  637.  *                file - value of R3 on entry
  638.  *                s - value of R4 on entry
  639.  *
  640.  * Other notes:   Calls SWI 0x33 with R0 = 0xA.
  641.  */
  642.  
  643. extern os_error *xupcall_stream_created (devicefs_d d,
  644.       bool tx_stream,
  645.       os_f file,
  646.       devicefs_s s);
  647. extern void upcall_stream_created (devicefs_d d,
  648.       bool tx_stream,
  649.       os_f file,
  650.       devicefs_s s);
  651.  
  652. /* ------------------------------------------------------------------------
  653.  * Function:      upcall_stream_closed()
  654.  *
  655.  * Description:   Stream closed
  656.  *
  657.  * Input:         d - value of R1 on entry
  658.  *                tx_stream - value of R2 on entry
  659.  *                file - value of R3 on entry
  660.  *                s - value of R4 on entry
  661.  *
  662.  * Other notes:   Calls SWI 0x33 with R0 = 0xB.
  663.  */
  664.  
  665. extern os_error *xupcall_stream_closed (devicefs_d d,
  666.       bool tx_stream,
  667.       os_f file,
  668.       devicefs_s s);
  669. extern void upcall_stream_closed (devicefs_d d,
  670.       bool tx_stream,
  671.       os_f file,
  672.       devicefs_s s);
  673.  
  674. /* ------------------------------------------------------------------------
  675.  * Function:      event_device_overrun()
  676.  *
  677.  * Description:   Device overrun event
  678.  *
  679.  * Input:         d - value of R1 on entry
  680.  *                file - value of R2 on entry
  681.  *
  682.  * Other notes:   Calls SWI 0x22 with R0 = 0x16, R3 = 0x0.
  683.  */
  684.  
  685. extern os_error *xevent_device_overrun (devicefs_d d,
  686.       os_f file);
  687. extern void event_device_overrun (devicefs_d d,
  688.       os_f file);
  689.  
  690. #ifdef __cplusplus
  691.    }
  692. #endif
  693.  
  694. #endif
  695.