Annotation of embedaddon/tmux/compat/imsg.h, revision 1.1
1.1 ! misho 1: /* $OpenBSD: imsg.h,v 1.4 2017/03/24 09:34:12 nicm Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 2006, 2007 Pierre-Yves Ritschard <pyr@openbsd.org>
! 5: * Copyright (c) 2006, 2007, 2008 Reyk Floeter <reyk@openbsd.org>
! 6: * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
! 7: *
! 8: * Permission to use, copy, modify, and distribute this software for any
! 9: * purpose with or without fee is hereby granted, provided that the above
! 10: * copyright notice and this permission notice appear in all copies.
! 11: *
! 12: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
! 13: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 14: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
! 15: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 16: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 17: * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
! 18: * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 19: */
! 20:
! 21: #ifndef _IMSG_H_
! 22: #define _IMSG_H_
! 23:
! 24: #define IBUF_READ_SIZE 65535
! 25: #define IMSG_HEADER_SIZE sizeof(struct imsg_hdr)
! 26: #define MAX_IMSGSIZE 16384
! 27:
! 28: struct ibuf {
! 29: TAILQ_ENTRY(ibuf) entry;
! 30: u_char *buf;
! 31: size_t size;
! 32: size_t max;
! 33: size_t wpos;
! 34: size_t rpos;
! 35: int fd;
! 36: };
! 37:
! 38: struct msgbuf {
! 39: TAILQ_HEAD(, ibuf) bufs;
! 40: uint32_t queued;
! 41: int fd;
! 42: };
! 43:
! 44: struct ibuf_read {
! 45: u_char buf[IBUF_READ_SIZE];
! 46: u_char *rptr;
! 47: size_t wpos;
! 48: };
! 49:
! 50: struct imsg_fd {
! 51: TAILQ_ENTRY(imsg_fd) entry;
! 52: int fd;
! 53: };
! 54:
! 55: struct imsgbuf {
! 56: TAILQ_HEAD(, imsg_fd) fds;
! 57: struct ibuf_read r;
! 58: struct msgbuf w;
! 59: int fd;
! 60: pid_t pid;
! 61: };
! 62:
! 63: #define IMSGF_HASFD 1
! 64:
! 65: struct imsg_hdr {
! 66: uint32_t type;
! 67: uint16_t len;
! 68: uint16_t flags;
! 69: uint32_t peerid;
! 70: uint32_t pid;
! 71: };
! 72:
! 73: struct imsg {
! 74: struct imsg_hdr hdr;
! 75: int fd;
! 76: void *data;
! 77: };
! 78:
! 79:
! 80: /* buffer.c */
! 81: struct ibuf *ibuf_open(size_t);
! 82: struct ibuf *ibuf_dynamic(size_t, size_t);
! 83: int ibuf_add(struct ibuf *, const void *, size_t);
! 84: void *ibuf_reserve(struct ibuf *, size_t);
! 85: void *ibuf_seek(struct ibuf *, size_t, size_t);
! 86: size_t ibuf_size(struct ibuf *);
! 87: size_t ibuf_left(struct ibuf *);
! 88: void ibuf_close(struct msgbuf *, struct ibuf *);
! 89: int ibuf_write(struct msgbuf *);
! 90: void ibuf_free(struct ibuf *);
! 91: void msgbuf_init(struct msgbuf *);
! 92: void msgbuf_clear(struct msgbuf *);
! 93: int msgbuf_write(struct msgbuf *);
! 94: void msgbuf_drain(struct msgbuf *, size_t);
! 95:
! 96: /* imsg.c */
! 97: void imsg_init(struct imsgbuf *, int);
! 98: ssize_t imsg_read(struct imsgbuf *);
! 99: ssize_t imsg_get(struct imsgbuf *, struct imsg *);
! 100: int imsg_compose(struct imsgbuf *, uint32_t, uint32_t, pid_t, int,
! 101: const void *, uint16_t);
! 102: int imsg_composev(struct imsgbuf *, uint32_t, uint32_t, pid_t, int,
! 103: const struct iovec *, int);
! 104: struct ibuf *imsg_create(struct imsgbuf *, uint32_t, uint32_t, pid_t, uint16_t);
! 105: int imsg_add(struct ibuf *, const void *, uint16_t);
! 106: void imsg_close(struct imsgbuf *, struct ibuf *);
! 107: void imsg_free(struct imsg *);
! 108: int imsg_flush(struct imsgbuf *);
! 109: void imsg_clear(struct imsgbuf *);
! 110:
! 111: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>