/* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ /* bos720 src/bos/kernel/sys/cblock.h 1.18 */ /* */ /* Licensed Materials - Property of IBM */ /* */ /* COPYRIGHT International Business Machines Corp. 1988,1989 */ /* All Rights Reserved */ /* */ /* US Government Users Restricted Rights - Use, duplication or */ /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /* */ /* IBM_PROLOG_END_TAG */ /* @(#)24 1.18 src/bos/kernel/sys/cblock.h, sysios, bos720 2/2/06 13:10:13 */ #ifndef _H_CBLOCK #define _H_CBLOCK /* * COMPONENT_NAME: (SYSIOS) Character I/O header file * * ORIGINS: 3, 27 * * (C) COPYRIGHT International Business Machines Corp. 1988, 1989 * All Rights Reserved * Licensed Materials - Property of IBM * * US Government Users Restricted Rights - Use, duplication or * disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /* A clist structure is the head of a character list. The getc* and putc* services manipulate these structures. */ struct cblock; struct clist { int c_cc; /* character count */ struct cblock *c_cf; /* pointer to first */ struct cblock *c_cl; /* pointer to last */ }; /* The structure of a character list buffer. */ #define CLSIZE 64 struct cblock { struct cblock *c_next; /* pointer to next cblock */ char c_first; /* offset of first character */ char c_last; /* offset of next character */ char c_data[CLSIZE]; /* data (characters) */ char c_flags; /* sanity checking */ }; struct chead { struct cblock *c_next; /* head of cblock free list */ int c_size; /* set to CLSIZE */ int c_flag; /* 0 = no free cblock waiters */ }; #ifdef __cplusplus extern "C" { #endif #ifdef _KERNEL /* don't break the build of the libs. */ #ifndef _NO_PROTO extern int getc(struct clist *header); /* get character from front of clist */ /* arguments: * register struct clist *header ptr to the character list */ extern int putc(char c, struct clist *p); /* put character at end of clist */ /* arguments: * register char c character to add to list * register struct clist *header ptr to the character list */ extern struct cblock *getcf(); /* get a free character buffer */ /* arguments: * None */ extern void putcf(struct cblock *p); /* frees a character buffer */ /* arguments: * register struct cblock *p ptr to character buf to free */ extern void putcfl(struct clist *header); /* frees a list of character buffers */ /* arguments: * register struct clist *header list of character bufs to free */ extern struct cblock *getcb(struct clist *header); /* get char buffer at front of char list*/ /* arguments: * register struct clist *header ptr to character list */ /* * put char buffer at end of char list */ extern void putcb(struct cblock *p, struct clist *header); /* arguments: * register struct cblock *p ptr to character buf to free */ /* * get n chars from front of char list */ extern int getcbp(struct clist *header, char *dest, int n); /* arguments: * register struct clist *header ptr to character list * register char *dest addr where to place chars * register int n # chars to read from char list */ /* * put n chars at end of char list */ extern int putcbp(struct clist *p, char *source, int n); /* arguments: * register struct cblock *p ptr to character buf to free * register char *source addr where to get chars from * register int n # chars to read from char list */ extern int getcx(struct clist *header); /* get a character from the end of char list */ /* arguments: * register struct clist *header ptr to the character list */ /* * put a character at front of the char list */ extern int putcx(char c, struct clist *p); /* arguments: * register char c character to add to list * register struct clist *header ptr to the character list */ extern int pincf(int delta); /* manage the list of free character buffers */ /* arguments: * register int delta # of char buffers to increase/ * decrease free list by */ extern int waitcfree(); /* check the availability of a free char buffer */ /* arguments: * None */ #else extern int getc(); /* get character from front of clist */ /* arguments: * register struct clist *header ptr to the character list */ extern int putc(); /* put character at end of clist */ /* arguments: * register char c character to add to list * register struct clist *header ptr to the character list */ extern struct cblock *getcf(); /* get a free character buffer */ /* arguments: * None */ extern void putcf(); /* frees a character buffer */ /* arguments: * register struct cblock *p ptr to character buf to free */ extern void putcfl(); /* frees a list of character buffers */ /* arguments: * register struct clist *header list of character bufs to free */ extern struct cblock *getcb(); /* get char buffer at front of char list*/ /* arguments: * register struct clist *header ptr to character list */ extern void putcb(); /* put char buffer at end of char list */ /* arguments: * register struct cblock *p ptr to character buf to free */ extern int getcbp(); /* get n chars from front of char list */ /* arguments: * register struct clist *header ptr to character list * register char *dest addr where to place chars * register int n # chars to read from char list */ extern int putcbp(); /* put n chars at end of char list */ /* arguments: * register struct cblock *p ptr to character buf to free * register char *source addr where to get chars from * register int n # chars to read from char list */ extern int getcx(); /* get a character from the end of char list */ /* arguments: * register struct clist *header ptr to the character list */ extern int putcx(); /* put a character at front of the char list */ /* arguments: * register char c character to add to list * register struct clist *header ptr to the character list */ extern int pincf(); /* manage the list of free character buffers */ /* arguments: * register int delta # of char buffers to increase/ * decrease free list by */ extern int waitcfree(); /* check the availability of a free char buffer */ /* arguments: * None */ #endif /* not _NO_PROTO */ #endif /* _KERNEL */ #ifdef __cplusplus } #endif #endif /* _H_CBLOCK */