msginfo
if (msghdr->msg_spot < 0 || msghdr->msg_spot >= msginfo.msgseg) {
if (msghdr->msg_ts >= msginfo.msgssz)
msghdr->msg_ts -= msginfo.msgssz;
segs_needed = (msgsz + msginfo.msgssz - 1) / msginfo.msgssz;
sysv_print("msgsz=%ld, msgssz=%d, segs_needed=%d\n", msgsz, msginfo.msgssz,
struct msginfo msginfo = {
if (next < 0 || next > msginfo.msgseg) {
if (msgsz > (size_t)msginfo.msgssz)
tlen = msginfo.msgssz;
if (next < 0 || next > msginfo.msgseg) {
memcpy(&msqpptr->msgpool[next * msginfo.msgssz], auxmsgp, tlen);
for (len = 0; len < msgsz; len += msginfo.msgssz) {
if (msgsz - len > (size_t)msginfo.msgssz)
tlen = msginfo.msgssz;
if (next < 0 || next > msginfo.msgseg) {
memcpy(auxmsgp, (caddr_t)&msqpptr->msgpool[next * msginfo.msgssz], tlen);
for (len = 0; len < msgsz; len += msginfo.msgssz) {
if (msgsz - len > msginfo.msgssz)
tlen = msginfo.msgssz;
if (next >= msginfo.msgseg)
eval = copyout((caddr_t)&msgpool[next * msginfo.msgssz],
sizeof(struct msqid_ds) * msginfo.msgmni));
TUNABLE_INT("kern.ipc.msgseg", &msginfo.msgseg);
TUNABLE_INT("kern.ipc.msgssz", &msginfo.msgssz);
TUNABLE_INT("kern.ipc.msgmni", &msginfo.msgmni);
SYSCTL_INT(_kern_ipc, OID_AUTO, msgmax, CTLFLAG_RD, &msginfo.msgmax, 0,
SYSCTL_INT(_kern_ipc, OID_AUTO, msgmni, CTLFLAG_RD, &msginfo.msgmni, 0,
SYSCTL_INT(_kern_ipc, OID_AUTO, msgmnb, CTLFLAG_RD, &msginfo.msgmnb, 0,
SYSCTL_INT(_kern_ipc, OID_AUTO, msgtql, CTLFLAG_RD, &msginfo.msgtql, 0,
SYSCTL_INT(_kern_ipc, OID_AUTO, msgssz, CTLFLAG_RD, &msginfo.msgssz, 0,
SYSCTL_INT(_kern_ipc, OID_AUTO, msgseg, CTLFLAG_RD, &msginfo.msgseg, 0,
msginfo.msgmax = msginfo.msgseg * msginfo.msgssz;
msgpool = kmalloc(msginfo.msgmax, M_MSG, M_WAITOK);
msgmaps = kmalloc(sizeof(struct msgmap) * msginfo.msgseg, M_MSG, M_WAITOK);
msghdrs = kmalloc(sizeof(struct msg) * msginfo.msgtql, M_MSG, M_WAITOK);
msqids = kmalloc(sizeof(struct msqid_ds) * msginfo.msgmni, M_MSG, M_WAITOK);
while (i < 1024 && i != msginfo.msgssz)
if (i != msginfo.msgssz) {
kprintf("msginfo.msgssz=%d (0x%x)\n", msginfo.msgssz,
msginfo.msgssz);
if (msginfo.msgseg > 32767) {
kprintf("msginfo.msgseg=%d\n", msginfo.msgseg);
for (i = 0; i < msginfo.msgseg; i++) {
nfree_msgmaps = msginfo.msgseg;
for (i = 0; i < msginfo.msgtql; i++) {
for (i = 0; i < msginfo.msgmni; i++) {
if (msghdr->msg_spot < 0 || msghdr->msg_spot >= msginfo.msgseg)
if (msghdr->msg_ts >= msginfo.msgssz)
msghdr->msg_ts -= msginfo.msgssz;
if (msqid < 0 || msqid >= msginfo.msgmni) {
msginfo.msgmni);
if (msqbuf.msg_qbytes > msginfo.msgmnb) {
msginfo.msgmnb);
msqbuf.msg_qbytes = msginfo.msgmnb; /* silently restrict qbytes to system limit */
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 = howmany(msgsz, msginfo.msgssz);
kprintf("msgsz=%d, msgssz=%d, segs_needed=%d\n", msgsz, msginfo.msgssz,
if (next >= msginfo.msgseg)
if (msgsz > msginfo.msgssz)
tlen = msginfo.msgssz;
if (next >= msginfo.msgseg)
if ((eval = copyin(user_msgp, &msgpool[next * msginfo.msgssz],
if (msqid < 0 || msqid >= msginfo.msgmni) {
msginfo.msgmni);
struct msginfo msginfo = {
extern struct msginfo msginfo;
kvm_read(kd, symbols[X_MSGINFO].n_value, &msginfo, sizeof(msginfo))== sizeof(msginfo)) {
msginfo.msgmax);
msginfo.msgmni);
msginfo.msgmnb);
msginfo.msgtql);
msginfo.msgssz);
msginfo.msgseg);
xmsqids = malloc(sizeof(struct msqid_ds) * msginfo.msgmni);
kvm_read(kd, (u_long) msqids, xmsqids, sizeof(struct msqid_ds) * msginfo.msgmni);
for (i = 0; i < msginfo.msgmni; i += 1) {
struct msginfo msginfo;
for (i = 0; i < msginfo.msgseg; i++) {
msgq->nfree_msgmaps = msginfo.msgseg;
for (i = 0; i < msginfo.msgtql; i++) {
msgq->ds.msg_qbytes = msginfo.msgmnb;
extern struct msginfo msginfo;
while (i < 1024 && i != msginfo.msgssz)
if (i != msginfo.msgssz) {
sysvd_print_err("msginfo.msgssz=%d (0x%x)\n", msginfo.msgssz,
msginfo.msgssz);
msginfo.msgmax = msginfo.msgseg * msginfo.msgssz;