Changeset 4a17aeb in buchla-68k


Ignore:
Timestamp:
07/11/2017 05:11:50 PM (7 years ago)
Author:
Thomas Lopatic <thomas@…>
Branches:
master
Children:
7af8be4
Parents:
4aa78b2
Message:

Prototypes for I/O dispatch pointers.

Files:
8 edited

Legend:

Unmodified
Added
Removed
  • include/io.h

    r4aa78b2 r4a17aeb  
    1111#include "stdint.h"
    1212
     13struct devtabl;
     14struct channel;
     15
     16typedef int16_t (*chclo)(io_arg arg);
     17typedef int16_t (*devop)(int8_t *name, int16_t flag, int16_t mode, struct channel *chp, struct devtabl *dp);
     18
    1319struct channel {                /* channel table entry */
    1420
     
    1723        int8_t  c_ioctl;        /* ioctl routine index */
    1824        int8_t  c_seek;         /* seek routine index */
    19         int16_t (*c_close)();   /* close function pointer */
     25        chclo   c_close;        /* close function pointer */
    2026        io_arg  c_arg;          /* argument to channel driver */
    2127};
     
    2733        int8_t  d_ioctl;        /* ioctl routine code */
    2834        int8_t  d_seek;         /* seek routine code */
    29         int16_t (*d_open)();    /* special open function */
     35        devop   d_open;         /* special open function */
    3036};
    3137
  • libcio/close.c

    r4aa78b2 r4a17aeb  
    7474        chp->c_ioctl = 0;
    7575        chp->c_seek  = 0;
    76         chp->c_close = _badfd;
     76        chp->c_close = _badfc;
    7777
    7878        if (_fatmod)
     
    115115
    116116        for (fd = 0; fd < MAXCHAN; ++fd)
    117                 if (chantab[fd].c_close NE _badfd)
     117                if (chantab[fd].c_close NE _badfc)
    118118                        close(fd);
    119119
  • libcio/clusmap.c

    r4aa78b2 r4a17aeb  
    289289void FILEpr(FILE *fp)
    290290{
    291         int16_t (*arg)(), ft;
     291        chclo arg;
     292        int16_t ft;
    292293        int8_t  *ds, *fsn, *fse;
    293294        struct  fcb     *fcp;
     
    305306        ft = 0;
    306307
    307         if (arg EQ _noper) {
     308        if (arg EQ _nopc) {
    308309
    309310                ds = ((struct devtabl *)chantab[fp->_unit].c_arg)->d_name;
  • libcio/fsinit.c

    r4aa78b2 r4a17aeb  
    3939/*
    4040   ============================================================================
    41         _badfd() -- set "bad fd" error
     41        _badfio() -- set "bad fd" error on I/O
    4242   ============================================================================
    4343*/
    4444
    45 int16_t _badfd(void)
     45int16_t _badfio(io_arg arg, int8_t *buff, int16_t len)
    4646{
    4747        errno = EBADF;          /* set bad fd code */
     
    5151/*
    5252   ============================================================================
    53         _noper() -- null return with no error condition
     53        _badfc() -- set "bad fd" error on close
    5454   ============================================================================
    5555*/
    5656
    57 int16_t _noper(void)
     57int16_t _badfc(io_arg arg)
     58{
     59        errno = EBADF;          /* set bad fd code */
     60        return(FAILURE);        /* return with an error indication */
     61}
     62
     63/*
     64   ============================================================================
     65        _nopo() -- null open with no error condition
     66   ============================================================================
     67*/
     68
     69int16_t _nopo(int8_t *name, int16_t flag, int16_t mode, struct channel *chp, struct devtabl *dp)
     70{
     71        return(SUCCESS);        /* return with a non-error indication */
     72}
     73
     74/*
     75   ============================================================================
     76        _nopc() -- null close with no error condition
     77   ============================================================================
     78*/
     79
     80int16_t _nopc(io_arg arg)
    5881{
    5982        return(SUCCESS);        /* return with a non-error indication */
     
    7093*/
    7194
    72 void InitCH(struct channel *cp, int8_t rdi, int8_t wri, int8_t ioi, int8_t ski, int16_t (*cfp)(), io_arg charg)
     95void InitCH(struct channel *cp, int8_t rdi, int8_t wri, int8_t ioi, int8_t ski, chclo cfp, io_arg charg)
    7396{
    7497        cp->c_read  = rdi;
     
    128151        Stdbufs = Stdbuf[MAXDFILE-1];
    129152
    130         InitCH(&chantab[0], 2, 0, 1, 0, _noper, (io_arg)CON_DEV );      /*  0 - stdin  */
    131         InitCH(&chantab[1], 0, 2, 1, 0, _noper, (io_arg)CON_DEV );      /*  1 - stdout */
    132         InitCH(&chantab[2], 0, 2, 1, 0, _noper, (io_arg)CON_DEV );      /*  2 - stderr */
     153        InitCH(&chantab[0], 2, 0, 1, 0, _nopc, (io_arg)CON_DEV );       /*  0 - stdin  */
     154        InitCH(&chantab[1], 0, 2, 1, 0, _nopc, (io_arg)CON_DEV );       /*  1 - stdout */
     155        InitCH(&chantab[2], 0, 2, 1, 0, _nopc, (io_arg)CON_DEV );       /*  2 - stderr */
    133156
    134157        for (i = 3; i < MAXCHAN; i++)   /*  3..MAXCHAN-1 - not preassigned */
    135                 InitCH(&chantab[i], 0, 0, 0, 0, _badfd, (io_arg)0L );
     158                InitCH(&chantab[i], 0, 0, 0, 0, _badfc, (io_arg)0L );
    136159
    137160        _bpbin  = FALSE;        /* BPB isn't in memory */
  • libcio/fsinit.x

    r4aa78b2 r4a17aeb  
    3737*/
    3838
    39 extern  void            InitCH(struct channel *cp, int8_t rdi, int8_t wri, int8_t ioi, int8_t ski, int16_t (*cfp)(), io_arg charg);
     39extern  void            InitCH(struct channel *cp, int8_t rdi, int8_t wri, int8_t ioi, int8_t ski, chclo cfp, io_arg charg);
    4040extern  void            InitFS(void);
    4141extern  void            Init_CB(FILE *fp, int8_t unit, int8_t flags, int32_t *bufad, int16_t bufsize);
    4242extern  int16_t         _badfd(void);
    4343extern  int16_t         _noper(void);
     44
     45extern  int16_t         _badfc(io_arg arg);
     46extern  int16_t         _badfio(io_arg arg, int8_t *buff, int16_t len);
     47extern  int16_t         _nopc(io_arg arg);
     48extern  int16_t         _nopo(int8_t *name, int16_t flag, int16_t mode, struct channel *chp, struct devtabl *dp);
  • libcio/open.c

    r4aa78b2 r4a17aeb  
    88#include "ram.h"
    99
    10 static struct device condev  = { 2, 2, 1, 0, _noper  };
     10static struct device condev  = { 2, 2, 1, 0, _nopo  };
    1111static struct device filedev = { 1, 1, 0, 1, _fileop };
    1212
     
    4848
    4949        for (chp = chantab, fd = 0 ; fd < MAXCHAN ; ++chp, ++fd)
    50                 if (chp->c_close EQ _badfd)
     50                if (chp->c_close EQ _badfc)
    5151                        goto fndchan;
    5252
     
    9090        chp->c_ioctl = dev->d_ioctl;
    9191        chp->c_seek  = dev->d_seek;
    92         chp->c_close = _noper;
     92        chp->c_close = _nopc;
    9393
    9494        if ((*dev->d_open)(name, flag, mode, chp, dp) < 0) {    /* open */
    9595
    96                 chp->c_close = _badfd;  /* couldn't open for some reason */
     96                chp->c_close = _badfc;  /* couldn't open for some reason */
    9797                return(FAILURE);
    9898        }
  • libcio/read.c

    r4aa78b2 r4a17aeb  
    3838#include "ram.h"
    3939
    40 static int16_t (*t_read[])() = {
     40static int16_t (*t_read[])(io_arg arg, int8_t *buff, int16_t len) = {
    4141
    42         _badfd,         /* 0 - invalid type */
     42        _badfio,        /* 0 - invalid type */
    4343        _filerd,        /* 1 - disk file read */
    4444        _conin          /* 2 - console read */
  • libcio/write.c

    r4aa78b2 r4a17aeb  
    1010#include "ram.h"
    1111
    12 static  int16_t (*wr_tab[])() = {       /* write routine dispatch table */
    13 
    14         _badfd,         /* 0 - invalid entry */
     12/* write routine dispatch table */
     13
     14static  int16_t (*wr_tab[])(io_arg arg, int8_t *buff, int16_t len) = {
     15
     16        _badfio,        /* 0 - invalid entry */
    1517        _filewr,        /* 1 - disk file */
    1618        _conwr          /* 2 - console device */
Note: See TracChangeset for help on using the changeset viewer.