msginfo
infosize = sizeof(msgsi->msginfo);
nds = msginfo.msgmni;
msgsi->msginfo = msginfo;
struct msginfo msginfo;
struct msginfo msginfo = {
infosize = sizeof(msgsi->msginfo);
nds = msginfo.msgmni;
msgsi->msginfo = msginfo;
if (msqid < 0 || msqid >= msginfo.msgmni) {
msginfo.msgmni));
while (i < 1024 && i != msginfo.msgssz)
if (i != msginfo.msgssz) {
msginfo.msgssz);
if (msginfo.msgseg > 32767) {
printf("msginfo.msgseg = %d > 32767", msginfo.msgseg);
sz = ALIGN(msginfo.msgmax) +
for (len = 0; len < msgsz; len += msginfo.msgssz) {
KASSERT(next < msginfo.msgseg);
if (msgsz - len > msginfo.msgssz)
tlen = msginfo.msgssz;
ALIGN(msginfo.msgseg * sizeof(struct msgmap)) +
error = copyout(&msgpool[next * msginfo.msgssz],
ALIGN(msginfo.msgtql * sizeof(struct __msg)) +
ALIGN(msginfo.msgmni * sizeof(kmsq_t));
newsize = msginfo.msgmni;
error = msgrealloc(newsize, msginfo.msgseg);
newsize = msginfo.msgseg;
error = msgrealloc(msginfo.msgmni, newsize);
sysctl_ipc_msgmni, 0, &msginfo.msgmni, 0,
sysctl_ipc_msgseg, 0, &msginfo.msgseg, 0,
msgmaps = (void *)((uintptr_t)msgpool + ALIGN(msginfo.msgmax));
ALIGN(msginfo.msgseg * sizeof(struct msgmap)));
ALIGN(msginfo.msgtql * sizeof(struct __msg)));
for (i = 0; i < (msginfo.msgseg - 1); i++)
msgmaps[msginfo.msgseg - 1].next = -1;
nfree_msgmaps = msginfo.msgseg;
for (i = 0; i < (msginfo.msgtql - 1); i++) {
i = msginfo.msgtql - 1;
for (i = 0; i < msginfo.msgmni; i++) {
for (i = 0; i < msginfo.msgmni; i++) {
for (i = 0; i < msginfo.msgmni; i++) {
sz = ALIGN(msginfo.msgmax) +
ALIGN(msginfo.msgseg * sizeof(struct msgmap)) +
ALIGN(msginfo.msgtql * sizeof(struct __msg)) +
ALIGN(msginfo.msgmni * sizeof(kmsq_t));
newmsgmax = msginfo.msgssz * newmsgseg;
ALIGN(msginfo.msgtql * sizeof(struct __msg)) +
for (i = 0; i < msginfo.msgmni; i++)
for (msqid = 0; msqid < msginfo.msgmni; msqid++) {
if (i >= newmsgmni || (msginfo.msgseg - nfree_msgmaps) > newmsgseg) {
ALIGN(msginfo.msgtql * sizeof(struct __msg)));
for (i = 0; i < (msginfo.msgtql - 1); i++) {
i = msginfo.msgtql - 1;
for (msqid = 0; msqid < msginfo.msgmni; msqid++) {
segcnt = (msgsz + msginfo.msgssz - 1) / msginfo.msgssz;
if (msgsz >= msginfo.msgssz) {
tlen = msginfo.msgssz;
msgsz -= msginfo.msgssz;
memcpy(&new_msgpool[nnext * msginfo.msgssz],
&msgpool[next * msginfo.msgssz], tlen);
KASSERT((msginfo.msgseg - nfree_msgmaps) ==
sz = ALIGN(msginfo.msgmax) +
ALIGN(msginfo.msgseg * sizeof(struct msgmap)) +
ALIGN(msginfo.msgtql * sizeof(struct __msg)) +
ALIGN(msginfo.msgmni * sizeof(kmsq_t));
for (i = 0; i < msginfo.msgmni; i++)
msginfo.msgmni = newmsgmni;
msginfo.msgseg = newmsgseg;
msginfo.msgmax = newmsgmax;
KASSERT(msghdr->msg_spot < msginfo.msgseg);
if (msghdr->msg_ts >= msginfo.msgssz)
msghdr->msg_ts -= msginfo.msgssz;
if (ix < 0 || ix >= msginfo.msgmni) {
msginfo.msgmni));
if (msqbuf->msg_qbytes > msginfo.msgmnb) {
"(truncating)\n", msginfo.msgmnb));
msqbuf->msg_qbytes = msginfo.msgmnb;
for (msqid = 0; msqid < msginfo.msgmni; msqid++) {
if (msqid < msginfo.msgmni) {
for (msqid = 0; msqid < msginfo.msgmni; msqid++) {
if (msqid == msginfo.msgmni) {
msqptr->msg_qbytes = msginfo.msgmnb;
if (msqid < 0 || msqid >= msginfo.msgmni) {
msginfo.msgmni));
segs_needed = (msgsz + msginfo.msgssz - 1) / msginfo.msgssz;
(long long)msgsz, msginfo.msgssz, segs_needed));
KASSERT(free_msgmaps < msginfo.msgseg);
KASSERT(next < msginfo.msgseg);
if (msgsz > msginfo.msgssz)
tlen = msginfo.msgssz;
error = copyin(user_msgp, &msgpool[next * msginfo.msgssz], tlen);
rl.rlim_cur = rl.rlim_max = msginfo.msgmnb;
for (int id = 0; id < msginfo.msgmni; id++)
struct msginfo msginfo;
extern struct msginfo msginfo;
for (i = 0; i < msgsi->msginfo.msgmni; i++) {
static void show_msgtotal(struct msginfo *);
show_msgtotal(struct msginfo *msginfo)
msginfo->msgmax);
msginfo->msgmni);
msginfo->msgmnb);
msginfo->msgtql);
msginfo->msgssz);
msginfo->msgseg);
len = sizeof(struct msginfo);
show_msgtotal(&msgsi->msginfo);
for (i = 0; i < msgsi->msginfo.msgmni; i++) {