Lines Matching +full:jd +full:- +full:src

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
67 mbp->msg_ptr = ptr; in msgbuf_init()
68 mbp->msg_size = size; in msgbuf_init()
69 mbp->msg_seqmod = SEQMOD(size); in msgbuf_init()
70 mbp->msg_lastpri = -1; in msgbuf_init()
71 mbp->msg_flags = 0; in msgbuf_init()
73 mbp->msg_magic = MSG_MAGIC; in msgbuf_init()
74 bzero(&mbp->msg_lock, sizeof(mbp->msg_lock)); in msgbuf_init()
75 mtx_init(&mbp->msg_lock, "msgbuf", NULL, MTX_SPIN); in msgbuf_init()
88 if (mbp->msg_magic != MSG_MAGIC || mbp->msg_size != size) { in msgbuf_reinit()
92 mbp->msg_seqmod = SEQMOD(size); in msgbuf_reinit()
93 mbp->msg_wseq = MSGBUF_SEQNORM(mbp, mbp->msg_wseq); in msgbuf_reinit()
94 mbp->msg_rseq = MSGBUF_SEQNORM(mbp, mbp->msg_rseq); in msgbuf_reinit()
95 mbp->msg_ptr = ptr; in msgbuf_reinit()
97 if (cksum != mbp->msg_cksum) { in msgbuf_reinit()
100 mbp->msg_cksum, cksum); in msgbuf_reinit()
106 mbp->msg_lastpri = -1; in msgbuf_reinit()
108 mbp->msg_flags |= MSGBUF_NEEDNL; in msgbuf_reinit()
109 bzero(&mbp->msg_lock, sizeof(mbp->msg_lock)); in msgbuf_reinit()
110 mtx_init(&mbp->msg_lock, "msgbuf", NULL, MTX_SPIN); in msgbuf_reinit()
120 bzero(mbp->msg_ptr, mbp->msg_size); in msgbuf_clear()
121 mbp->msg_wseq = 0; in msgbuf_clear()
122 mbp->msg_rseq = 0; in msgbuf_clear()
123 mbp->msg_cksum = 0; in msgbuf_clear()
124 mbp->msg_flags &= ~MSGBUF_WRAP; in msgbuf_clear()
135 len = MSGBUF_SEQSUB(mbp, mbp->msg_wseq, mbp->msg_rseq); in msgbuf_getcount()
136 if (len > mbp->msg_size) in msgbuf_getcount()
137 len = mbp->msg_size; in msgbuf_getcount()
153 pos = MSGBUF_SEQ_TO_POS(mbp, mbp->msg_wseq); in msgbuf_do_addchar()
154 mbp->msg_cksum += (u_int)(u_char)c - in msgbuf_do_addchar()
155 (u_int)(u_char)mbp->msg_ptr[pos]; in msgbuf_do_addchar()
156 mbp->msg_ptr[pos] = c; in msgbuf_do_addchar()
157 mbp->msg_wseq = MSGBUF_SEQADD(mbp, mbp->msg_wseq, 1); in msgbuf_do_addchar()
166 mtx_lock_spin(&mbp->msg_lock); in msgbuf_addchar()
169 if (mbp->msg_wseq >= mbp->msg_size) in msgbuf_addchar()
170 mbp->msg_flags |= MSGBUF_WRAP; in msgbuf_addchar()
172 mtx_unlock_spin(&mbp->msg_lock); in msgbuf_addchar()
176 * Append a NUL-terminated string with a priority to a message buffer.
194 /* If we have a zero-length string, no need to do anything. */ in msgbuf_addstr()
198 mtx_lock_spin(&mbp->msg_lock); in msgbuf_addstr()
204 if (pri != -1) in msgbuf_addstr()
209 * newline, and a priority prefix if the priority is not -1. Here in msgbuf_addstr()
214 if (mbp->msg_lastpri != pri && (mbp->msg_flags & MSGBUF_NEEDNL) != 0) { in msgbuf_addstr()
216 mbp->msg_flags &= ~MSGBUF_NEEDNL; in msgbuf_addstr()
222 * If we just had a newline, and the priority is not -1 in msgbuf_addstr()
226 if ((mbp->msg_flags & MSGBUF_NEEDNL) == 0 && prefix_len != 0) { in msgbuf_addstr()
234 (mbp->msg_flags & MSGBUF_NEEDNL) == 0) { in msgbuf_addstr()
236 snprintf(buf, sizeof(buf), "[%jd] ", in msgbuf_addstr()
242 snprintf(buf, sizeof(buf), "[%jd.%06d] ", in msgbuf_addstr()
266 mbp->msg_flags &= ~MSGBUF_NEEDNL; in msgbuf_addstr()
268 mbp->msg_flags |= MSGBUF_NEEDNL; in msgbuf_addstr()
272 if (mbp->msg_wseq >= mbp->msg_size) in msgbuf_addstr()
273 mbp->msg_flags |= MSGBUF_WRAP; in msgbuf_addstr()
278 mbp->msg_lastpri = pri; in msgbuf_addstr()
280 mtx_unlock_spin(&mbp->msg_lock); in msgbuf_addstr()
286 * Returns the character, or -1 if no characters are available.
294 mtx_lock_spin(&mbp->msg_lock); in msgbuf_getchar()
296 wseq = mbp->msg_wseq; in msgbuf_getchar()
297 len = MSGBUF_SEQSUB(mbp, wseq, mbp->msg_rseq); in msgbuf_getchar()
299 mtx_unlock_spin(&mbp->msg_lock); in msgbuf_getchar()
300 return (-1); in msgbuf_getchar()
302 if (len > mbp->msg_size) in msgbuf_getchar()
303 mbp->msg_rseq = MSGBUF_SEQSUB(mbp, wseq, mbp->msg_size); in msgbuf_getchar()
304 c = (u_char)mbp->msg_ptr[MSGBUF_SEQ_TO_POS(mbp, mbp->msg_rseq)]; in msgbuf_getchar()
305 mbp->msg_rseq = MSGBUF_SEQADD(mbp, mbp->msg_rseq, 1); in msgbuf_getchar()
307 mtx_unlock_spin(&mbp->msg_lock); in msgbuf_getchar()
321 mtx_lock_spin(&mbp->msg_lock); in msgbuf_getbytes()
323 wseq = mbp->msg_wseq; in msgbuf_getbytes()
324 len = MSGBUF_SEQSUB(mbp, wseq, mbp->msg_rseq); in msgbuf_getbytes()
326 mtx_unlock_spin(&mbp->msg_lock); in msgbuf_getbytes()
329 if (len > mbp->msg_size) { in msgbuf_getbytes()
330 mbp->msg_rseq = MSGBUF_SEQSUB(mbp, wseq, mbp->msg_size); in msgbuf_getbytes()
331 len = mbp->msg_size; in msgbuf_getbytes()
333 pos = MSGBUF_SEQ_TO_POS(mbp, mbp->msg_rseq); in msgbuf_getbytes()
334 len = min(len, mbp->msg_size - pos); in msgbuf_getbytes()
337 bcopy(&mbp->msg_ptr[pos], buf, len); in msgbuf_getbytes()
338 mbp->msg_rseq = MSGBUF_SEQADD(mbp, mbp->msg_rseq, len); in msgbuf_getbytes()
340 mtx_unlock_spin(&mbp->msg_lock); in msgbuf_getbytes()
360 mtx_lock_spin(&mbp->msg_lock); in msgbuf_peekbytes()
364 if (mbp->msg_flags & MSGBUF_WRAP) in msgbuf_peekbytes()
365 *seqp = MSGBUF_SEQSUB(mbp, mbp->msg_wseq, mbp->msg_size); in msgbuf_peekbytes()
368 mtx_unlock_spin(&mbp->msg_lock); in msgbuf_peekbytes()
372 wseq = mbp->msg_wseq; in msgbuf_peekbytes()
375 mtx_unlock_spin(&mbp->msg_lock); in msgbuf_peekbytes()
378 if (len > mbp->msg_size) { in msgbuf_peekbytes()
379 *seqp = MSGBUF_SEQSUB(mbp, wseq, mbp->msg_size); in msgbuf_peekbytes()
380 len = mbp->msg_size; in msgbuf_peekbytes()
383 len = min(len, mbp->msg_size - pos); in msgbuf_peekbytes()
385 bcopy(&mbp->msg_ptr[MSGBUF_SEQ_TO_POS(mbp, *seqp)], buf, len); in msgbuf_peekbytes()
388 mtx_unlock_spin(&mbp->msg_lock); in msgbuf_peekbytes()
402 for (i = 0; i < mbp->msg_size; i++) in msgbuf_cksum()
403 sum += (u_char)mbp->msg_ptr[i]; in msgbuf_cksum()
411 msgbuf_copy(struct msgbuf *src, struct msgbuf *dst) in msgbuf_copy() argument
415 while ((c = msgbuf_getchar(src)) >= 0) in msgbuf_copy()
424 msgbuf_duplicate(struct msgbuf *src, struct msgbuf *dst, char *dst_msgptr) in msgbuf_duplicate() argument
427 mtx_lock_spin(&src->msg_lock); in msgbuf_duplicate()
428 bcopy(src, dst, sizeof(struct msgbuf)); in msgbuf_duplicate()
429 dst->msg_ptr = dst_msgptr; in msgbuf_duplicate()
430 bcopy(src->msg_ptr, dst->msg_ptr, src->msg_size); in msgbuf_duplicate()
431 mtx_unlock_spin(&src->msg_lock); in msgbuf_duplicate()