msginfo
sbuf_printf(sb, "%d\n", msginfo.msgmax);
sbuf_printf(sb, "%d\n", msginfo.msgmni);
sbuf_printf(sb, "%d\n", msginfo.msgmnb);
if ((l_long)args->msgsz < 0 || args->msgsz > (l_long)msginfo.msgmax)
if ((l_long)args->msgsz < 0 || args->msgsz > (l_long)msginfo.msgmax)
linux_msginfo.msgpool = (long)msginfo.msgmni *
(long)msginfo.msgmnb / 1024L; /* XXX MSG_INFO. */
linux_msginfo.msgmap = msginfo.msgmnb; /* XXX MSG_INFO. */
linux_msginfo.msgmax = msginfo.msgmax;
linux_msginfo.msgmnb = msginfo.msgmnb;
linux_msginfo.msgmni = msginfo.msgmni;
linux_msginfo.msgssz = msginfo.msgssz;
linux_msginfo.msgtql = msginfo.msgtql; /* XXX MSG_INFO. */
linux_msginfo.msgseg = msginfo.msgseg;
td->td_retval[0] = msginfo.msgmni; /* XXX */
if (msgsz > msginfo.msgssz)
tlen = msginfo.msgssz;
if (next >= msginfo.msgseg)
if ((error = copyin(msgp, &msgpool[next * msginfo.msgssz],
if (msqix < 0 || msqix >= msginfo.msgmni) {
msginfo.msgmni));
struct msginfo msginfo = {
for (len = 0; len < msgsz; len += msginfo.msgssz) {
if (msgsz - len > msginfo.msgssz)
tlen = msginfo.msgssz;
if (next >= msginfo.msgseg)
error = copyout(&msgpool[next * msginfo.msgssz], msgp, tlen);
for (i = 0; i < msginfo.msgmni; i++) {
*sz = mi = msginfo.msgmni;
SYSCTL_INT(_kern_ipc, OID_AUTO, msgmax, CTLFLAG_RD, &msginfo.msgmax, 0,
SYSCTL_INT(_kern_ipc, OID_AUTO, msgmni, CTLFLAG_RDTUN, &msginfo.msgmni, 0,
SYSCTL_INT(_kern_ipc, OID_AUTO, msgmnb, CTLFLAG_RDTUN, &msginfo.msgmnb, 0,
SYSCTL_INT(_kern_ipc, OID_AUTO, msgtql, CTLFLAG_RDTUN, &msginfo.msgtql, 0,
SYSCTL_INT(_kern_ipc, OID_AUTO, msgssz, CTLFLAG_RDTUN, &msginfo.msgssz, 0,
SYSCTL_INT(_kern_ipc, OID_AUTO, msgseg, CTLFLAG_RDTUN, &msginfo.msgseg, 0,
for (i = 0; i < msginfo.msgmni; i++) {
msginfo.msgmax = msginfo.msgseg * msginfo.msgssz;
msgpool = malloc(msginfo.msgmax, M_MSG, M_WAITOK);
msgmaps = malloc(sizeof(struct msgmap) * msginfo.msgseg, M_MSG, M_WAITOK);
msghdrs = malloc(sizeof(struct msg) * msginfo.msgtql, M_MSG, M_WAITOK);
msqids = malloc(sizeof(struct msqid_kernel) * msginfo.msgmni, M_MSG,
while (i < 1024 && i != msginfo.msgssz)
if (i != msginfo.msgssz) {
DPRINTF(("msginfo.msgssz=%d (0x%x)\n", msginfo.msgssz,
msginfo.msgssz));
if (msginfo.msgseg > 32767) {
DPRINTF(("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++) {
for (msqid = 0; msqid < msginfo.msgmni; msqid++) {
if (msqid != msginfo.msgmni)
for (i = 0; i < msginfo.msgtql; i++)
for (msqid = 0; msqid < msginfo.msgmni; msqid++)
if (msghdr->msg_spot < 0 || msghdr->msg_spot >= msginfo.msgseg)
if (msghdr->msg_ts >= msginfo.msgssz)
msghdr->msg_ts -= msginfo.msgssz;
if (msqix < 0 || msqix >= msginfo.msgmni) {
msginfo.msgmni));
if (msqbuf->msg_qbytes > msginfo.msgmnb) {
"(truncating)\n", 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) {
msqkptr->u.msg_qbytes = msginfo.msgmnb;
if (msqix < 0 || msqix >= msginfo.msgmni) {
msginfo.msgmni));
segs_needed = howmany(msgsz, msginfo.msgssz);
msginfo.msgssz, segs_needed));
if (next >= msginfo.msgseg)
extern struct msginfo msginfo;
kget(X_MSGINFO, &msginfo, sizeof(msginfo));
kxmsqids_len = sizeof(struct msqid_kernel) * msginfo.msgmni;
num = msginfo.msgmni;
struct msginfo msginfo;
#define TYPEC struct msginfo
extern struct msginfo msginfo;
kget(X_MSGINFO, &msginfo, sizeof(msginfo));
print_kmsqtotal(msginfo);
sizeof(struct msqid_kernel) * msginfo.msgmni;
for (i = 0; i < msginfo.msgmni; i += 1) {
print_kmsqtotal(struct msginfo local_msginfo)
void print_kmsqtotal(struct msginfo msginfo);