Annotation of OSKit-Mach/oskit/ds_stream.c, revision 1.1.1.1

1.1       root        1: /* device server routines for oskit stream devices.
                      2: 
                      3:    This is a very simple version really not fit for general use at all.  It
                      4:    blocks the thread making sending the device RPC *request* until the read
                      5:    or write completes.  This is only fit for kernel debugging when the
                      6:    "real" minimal console code is not available.  (I ain't written it yet!)
                      7: */
                      8: 
                      9: #include "ds_oskit.h"
                     10: 
                     11: 
                     12: /* In keeping with Mach's old chario behavior, we just ignore RECNUM.  */
                     13: 
                     14: io_return_t
                     15: ds_stream_write_inband (device_t dev, ipc_port_t reply_port,
                     16:                        mach_msg_type_name_t reply_port_type, dev_mode_t mode,
                     17:                        recnum_t recnum, io_buf_ptr_t data, unsigned int count,
                     18:                        int *bytes_written)
                     19: {
                     20:   oskit_error_t rc;
                     21: 
                     22:   *bytes_written = count;      /* oskit console is buggy */
                     23:   rc = oskit_stream_write (dev->com.stream.io, data, count, bytes_written);
                     24: 
                     25:   return oskit_to_mach_error (rc);
                     26: }
                     27: 
                     28: io_return_t
                     29: ds_stream_read_inband (device_t dev, ipc_port_t reply_port,
                     30:                       mach_msg_type_name_t reply_port_type, dev_mode_t mode,
                     31:                       recnum_t recnum, int count, char *data,
                     32:                       unsigned *bytes_read)
                     33: {
                     34:   oskit_error_t rc;
                     35: 
                     36:   if (count == 0)
                     37:     {
                     38:       *bytes_read = 0;
                     39:       return D_SUCCESS;
                     40:     }
                     41: 
                     42:   /* XXX bad blocking behavior: user thread doing read_request_inband blocks
                     43:    */
                     44: 
                     45:   rc = oskit_stream_read (dev->com.stream.io, data, count, bytes_read);
                     46:   return oskit_to_mach_error (rc);
                     47: }
                     48: 
                     49: const struct device_ops stream_device_ops =
                     50: {
                     51:   write_inband: ds_stream_write_inband, read_inband: ds_stream_read_inband
                     52: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.