shmctl_msg
struct shmctl_msg *msg;
size = sizeof(struct shmctl_msg);
handle_shmctl(struct shmctl_msg *shmctl_msg,
shmseg = shm_find_segment_by_shmid(shmctl_msg->shmid);
switch (shmctl_msg->cmd) {
shmctl_msg->buf = *shmseg;
inbuf = &shmctl_msg->buf;
shmctl_msg->shmid);
shm_deallocate_segment(IPCID_TO_IX(shmctl_msg->shmid));
shm_last_free = IPCID_TO_IX(shmctl_msg->shmid);
mark_segment_removed(shmctl_msg->shmid,
int handle_shmctl(struct shmctl_msg *, struct cmsgcred *);
struct shmctl_msg shmctl_msg;
receive_msg_with_cred(fd_recv, (char *)&shmctl_msg,
sizeof(shmctl_msg), &cred);
error = handle_shmctl(&shmctl_msg, &cred);
if (error == 0 && shmctl_msg.cmd == IPC_STAT) {
write(fd_send, (char *)&shmctl_msg.buf,