int mbox_open(int key) { mbox_t *box; if (key < 0 || key >= MAX_MBOX) return -1; box = Q[key]; lock_acquire(&box->l); if (!l->used) { box->count = 0; box->head = 0; box->tail = 0; } used++; lock_release(&box->l); }