text: #ifndef __SBUF_H__
  #define __SBUF_H__
  
  #include "csapp.h"
  
  /* $begin sbuft */
  typedef struct {
      int *buf;     /* Buffer array                       */         
      int n;        /* Maximum number of slots            */
      int front;    /* buf[front+1 (mod n)] is first item */
      int rear;     /* buf[rear]   is last item           */
      sem_t mutex;  /* Protects accesses to buf           */
      sem_t slots;  /* Counts available slots             */
      sem_t items;  /* Counts available items             */
  } sbuf_t;
  /* $end sbuft */
  
  void sbuf_init(sbuf_t *sp, int n);
  void sbuf_deinit(sbuf_t *sp);
  void sbuf_insert(sbuf_t *sp, int item);
  int sbuf_remove(sbuf_t *sp);
  
  #endif /* __SBUF_H__ */
  