cirbuf.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Mach Operating System
  3. * Copyright (c) 1991,1990 Carnegie Mellon University
  4. * All Rights Reserved.
  5. *
  6. * Permission to use, copy, modify and distribute this software and its
  7. * documentation is hereby granted, provided that both the copyright
  8. * notice and this permission notice appear in all copies of the
  9. * software, derivative works or modified versions, and any portions
  10. * thereof, and that both notices appear in supporting documentation.
  11. *
  12. * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
  13. * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
  14. * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
  15. *
  16. * Carnegie Mellon requests users of this software to return to
  17. *
  18. * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
  19. * School of Computer Science
  20. * Carnegie Mellon University
  21. * Pittsburgh PA 15213-3890
  22. *
  23. * any improvements or extensions that they make and grant Carnegie Mellon
  24. * the rights to redistribute these changes.
  25. */
  26. /*
  27. * Author: David B. Golub, Carnegie Mellon University
  28. * Date: 7/90
  29. */
  30. #ifndef _DEVICE_CIRBUF_H_
  31. #define _DEVICE_CIRBUF_H_
  32. /*
  33. * Circular buffers for TTY
  34. */
  35. struct cirbuf {
  36. char * c_start; /* start of buffer */
  37. char * c_end; /* end of buffer + 1*/
  38. char * c_cf; /* read pointer */
  39. char * c_cl; /* write pointer */
  40. short c_cc; /* current number of characters
  41. (compatibility) */
  42. short c_hog; /* max ever */
  43. };
  44. /*
  45. * Exported routines
  46. */
  47. extern int putc(int, struct cirbuf *);
  48. extern int getc(struct cirbuf *);
  49. extern int q_to_b(struct cirbuf *, char *, int);
  50. extern int b_to_q(char *, int, struct cirbuf *);
  51. extern void ndflush(struct cirbuf *, int);
  52. extern void cb_clear(struct cirbuf *);
  53. extern void cb_alloc(struct cirbuf *, vm_size_t);
  54. extern void cb_free(struct cirbuf *);
  55. #endif /* _DEVICE_CIRBUF_H_ */