Avoid fixing the tty_info() buffer size in tty.h.
Different compilation units may otherwise get a different view of the layout of struct tty depending on whether they include opt_printf.h. This caused a blowup in the number of types defined in the kernel's CTF file after r339468; thanks to dim@ for bisecting down to that revision. PR: 232675 Reported by: dim Reviewed by: cem (previous version) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D17877
This commit is contained in:
parent
6ad8a6eaa4
commit
f8a222010f
@ -33,6 +33,7 @@
|
|||||||
__FBSDID("$FreeBSD$");
|
__FBSDID("$FreeBSD$");
|
||||||
|
|
||||||
#include "opt_capsicum.h"
|
#include "opt_capsicum.h"
|
||||||
|
#include "opt_printf.h"
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/capsicum.h>
|
#include <sys/capsicum.h>
|
||||||
@ -106,6 +107,12 @@ SYSCTL_INT(_kern, OID_AUTO, tty_drainwait, CTLFLAG_RWTUN,
|
|||||||
|
|
||||||
#define TTYBUF_MAX 65536
|
#define TTYBUF_MAX 65536
|
||||||
|
|
||||||
|
#ifdef PRINTF_BUFR_SIZE
|
||||||
|
#define TTY_PRBUF_SIZE PRINTF_BUFR_SIZE
|
||||||
|
#else
|
||||||
|
#define TTY_PRBUF_SIZE 256
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate buffer space if necessary, and set low watermarks, based on speed.
|
* Allocate buffer space if necessary, and set low watermarks, based on speed.
|
||||||
* Note that the ttyxxxq_setsize() functions may drop and then reacquire the tty
|
* Note that the ttyxxxq_setsize() functions may drop and then reacquire the tty
|
||||||
@ -1051,7 +1058,9 @@ tty_alloc_mutex(struct ttydevsw *tsw, void *sc, struct mtx *mutex)
|
|||||||
PATCH_FUNC(busy);
|
PATCH_FUNC(busy);
|
||||||
#undef PATCH_FUNC
|
#undef PATCH_FUNC
|
||||||
|
|
||||||
tp = malloc(sizeof(struct tty), M_TTY, M_WAITOK|M_ZERO);
|
tp = malloc(sizeof(struct tty) + TTY_PRBUF_SIZE, M_TTY,
|
||||||
|
M_WAITOK | M_ZERO);
|
||||||
|
tp->t_prbufsz = TTY_PRBUF_SIZE;
|
||||||
tp->t_devsw = tsw;
|
tp->t_devsw = tsw;
|
||||||
tp->t_devswsoftc = sc;
|
tp->t_devswsoftc = sc;
|
||||||
tp->t_flags = tsw->tsw_flags;
|
tp->t_flags = tsw->tsw_flags;
|
||||||
|
@ -271,7 +271,7 @@ tty_info(struct tty *tp)
|
|||||||
if (tty_checkoutq(tp) == 0)
|
if (tty_checkoutq(tp) == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
(void)sbuf_new(&sb, tp->t_prbuf, sizeof(tp->t_prbuf), SBUF_FIXEDLEN);
|
(void)sbuf_new(&sb, tp->t_prbuf, tp->t_prbufsz, SBUF_FIXEDLEN);
|
||||||
sbuf_set_drain(&sb, sbuf_tty_drain, tp);
|
sbuf_set_drain(&sb, sbuf_tty_drain, tp);
|
||||||
|
|
||||||
/* Print load average. */
|
/* Print load average. */
|
||||||
|
@ -133,12 +133,8 @@ struct tty {
|
|||||||
void *t_hooksoftc; /* (t) Soft config, for hooks. */
|
void *t_hooksoftc; /* (t) Soft config, for hooks. */
|
||||||
struct cdev *t_dev; /* (c) Primary character device. */
|
struct cdev *t_dev; /* (c) Primary character device. */
|
||||||
|
|
||||||
#ifndef PRINTF_BUFR_SIZE
|
size_t t_prbufsz; /* (t) SIGINFO buffer size. */
|
||||||
#define TTY_PRINTF_SIZE 256
|
char t_prbuf[]; /* (t) SIGINFO buffer. */
|
||||||
#else
|
|
||||||
#define TTY_PRINTF_SIZE PRINTF_BUFR_SIZE
|
|
||||||
#endif
|
|
||||||
char t_prbuf[TTY_PRINTF_SIZE]; /* (t) */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user