Home | History | Annotate | Download | only in compat

Lines Matching refs:imsgbuf

39 imsgbuf_init(struct imsgbuf *imsgbuf, int fd)
41 imsgbuf->w = msgbuf_new_reader(IMSG_HEADER_SIZE, imsg_parse_hdr,
42 imsgbuf);
43 if (imsgbuf->w == NULL)
45 imsgbuf->pid = getpid();
46 imsgbuf->maxsize = MAX_IMSGSIZE;
47 imsgbuf->fd = fd;
48 imsgbuf->flags = 0;
53 imsgbuf_allow_fdpass(struct imsgbuf *imsgbuf)
55 imsgbuf->flags |= IMSG_ALLOW_FDPASS;
59 imsgbuf_set_maxsize(struct imsgbuf *imsgbuf, uint32_t max)
70 imsgbuf->maxsize = max;
75 imsgbuf_read(struct imsgbuf *imsgbuf)
77 if (imsgbuf->flags & IMSG_ALLOW_FDPASS)
78 return msgbuf_read(imsgbuf->fd, imsgbuf->w);
80 return ibuf_read(imsgbuf->fd, imsgbuf->w);
84 imsgbuf_write(struct imsgbuf *imsgbuf)
86 if (imsgbuf->flags & IMSG_ALLOW_FDPASS)
87 return msgbuf_write(imsgbuf->fd, imsgbuf->w);
89 return ibuf_write(imsgbuf->fd, imsgbuf->w);
93 imsgbuf_flush(struct imsgbuf *imsgbuf)
95 while (imsgbuf_queuelen(imsgbuf) > 0) {
96 if (imsgbuf_write(imsgbuf) == -1)
103 imsgbuf_clear(struct imsgbuf *imsgbuf)
105 msgbuf_free(imsgbuf->w);
106 imsgbuf->w = NULL;
110 imsgbuf_queuelen(struct imsgbuf *imsgbuf)
112 return msgbuf_queuelen(imsgbuf->w);
116 imsgbuf_get(struct imsgbuf *imsgbuf, struct imsg *imsg)
121 if ((buf = msgbuf_get(imsgbuf->w)) == NULL)
139 imsg_get(struct imsgbuf *imsgbuf, struct imsg *imsg)
143 if ((rv = imsgbuf_get(imsgbuf, imsg)) != 1)
246 imsg_compose(struct imsgbuf *imsgbuf, uint32_t type, uint32_t id, pid_t pid,
251 if ((wbuf = imsg_create(imsgbuf, type, id, pid, datalen)) == NULL)
258 imsg_close(imsgbuf, wbuf);
268 imsg_composev(struct imsgbuf *imsgbuf, uint32_t type, uint32_t id, pid_t pid,
278 if ((wbuf = imsg_create(imsgbuf, type, id, pid, datalen)) == NULL)
286 imsg_close(imsgbuf, wbuf);
300 imsg_compose_ibuf(struct imsgbuf *imsgbuf, uint32_t type, uint32_t id,
306 if (ibuf_size(buf) + IMSG_HEADER_SIZE > imsgbuf->maxsize) {
315 hdr.pid = imsgbuf->pid;
322 ibuf_close(imsgbuf->w, hdrbuf);
323 ibuf_close(imsgbuf->w, buf);
335 imsg_forward(struct imsgbuf *imsgbuf, struct imsg *msg)
344 if ((wbuf = imsg_create(imsgbuf, msg->hdr.type, msg->hdr.peerid,
355 imsg_close(imsgbuf, wbuf);
360 imsg_create(struct imsgbuf *imsgbuf, uint32_t type, uint32_t id, pid_t pid,
367 if (datalen > imsgbuf->maxsize) {
376 hdr.pid = imsgbuf->pid;
377 if ((wbuf = ibuf_dynamic(datalen, imsgbuf->maxsize)) == NULL)
401 imsg_close(struct imsgbuf *imsgbuf, struct ibuf *msg)
409 ibuf_close(imsgbuf->w, msg);
431 struct imsgbuf *imsgbuf = arg;
441 if (len < IMSG_HEADER_SIZE || len > imsgbuf->maxsize) {