strfdinsert
strflags(pri, strfdinsert.flags),
strfdinsert.fildes,
strfdinsert.offset);
struct strfdinsert strfdinsert;
if (Pread(Proc, &strfdinsert, sizeof (strfdinsert), offset) ==
sizeof (strfdinsert)) {
print_strbuf(pri, &strfdinsert.ctlbuf, "ctl", FALSE);
print_strbuf(pri, &strfdinsert.databuf, "dat", FALSE);
strflags(pri, strfdinsert.flags),
strfdinsert.fildes,
strfdinsert.offset);
struct strfdinsert32 strfdinsert;
if (Pread(Proc, &strfdinsert, sizeof (strfdinsert), offset) ==
sizeof (strfdinsert)) {
print_strbuf32(pri, &strfdinsert.ctlbuf, "ctl", FALSE);
print_strbuf32(pri, &strfdinsert.databuf, "dat", FALSE);
strfdinsert.ctlbuf.maxlen = ctlbuf.maxlen;
strfdinsert.ctlbuf.len = ctlbuf.len;
strfdinsert.ctlbuf.buf = ctlbuf.buf;
strfdinsert.databuf.maxlen = call->udata.maxlen;
strfdinsert.databuf.len =
strfdinsert.databuf.buf = call->udata.buf;
strfdinsert.fildes = resfd;
strfdinsert.offset = (int)sizeof (t_scalar_t);
strfdinsert.flags = 0; /* could be EXPEDITED also */
if (ioctl(fd, I_FDINSERT, &strfdinsert) < 0) {
struct strfdinsert strfdinsert;
STRUCT_DECL(strfdinsert, strfdinsert);
STRUCT_INIT(strfdinsert, flag);
error = strcopyin((void *)arg, STRUCT_BUF(strfdinsert),
STRUCT_SIZE(strfdinsert), copyflag);
if (STRUCT_FGET(strfdinsert, offset) < 0 ||
(STRUCT_FGET(strfdinsert, offset) %
if ((resftp = getf(STRUCT_FGET(strfdinsert, fildes))) != NULL) {
releasef(STRUCT_FGET(strfdinsert, fildes));
releasef(STRUCT_FGET(strfdinsert, fildes));
if (STRUCT_FGET(strfdinsert, ctlbuf.len) <
STRUCT_FGET(strfdinsert, offset) + sizeof (t_uscalar_t)) {
releasef(STRUCT_FGET(strfdinsert, fildes));
if (STRUCT_FGET(strfdinsert, flags) & ~RS_HIPRI) {
releasef(STRUCT_FGET(strfdinsert, fildes));
releasef(STRUCT_FGET(strfdinsert, fildes));
if ((msgsize = STRUCT_FGET(strfdinsert, databuf.len)) < 0)
(STRUCT_FGET(strfdinsert, ctlbuf.len) > strctlsz)) {
releasef(STRUCT_FGET(strfdinsert, fildes));
while (!(STRUCT_FGET(strfdinsert, flags) & RS_HIPRI) &&
releasef(STRUCT_FGET(strfdinsert, fildes));
STRUCT_FGET(strfdinsert, fildes));
mctl.maxlen = STRUCT_FGET(strfdinsert, ctlbuf.maxlen);
mctl.len = STRUCT_FGET(strfdinsert, ctlbuf.len);
mctl.buf = STRUCT_FGETP(strfdinsert, ctlbuf.buf);
iov.iov_base = STRUCT_FGETP(strfdinsert, databuf.buf);
iov.iov_len = STRUCT_FGET(strfdinsert, databuf.len);
STRUCT_FGET(strfdinsert, flags), &mp)) != 0 || !mp) {
STRUCT_FSET(strfdinsert, databuf.len, msgsize);
releasef(STRUCT_FGET(strfdinsert, fildes));
STRUCT_FSET(strfdinsert, databuf.len, msgsize);
STRUCT_FGET(strfdinsert, offset))) = ival;
releasef(STRUCT_FGET(strfdinsert, fildes));