Lines Matching defs:disc
121 #define TTYLDISC_ISSTATIC(disc) \
122 ((disc) == &termios_disc || (disc) == &ntty_disc)
124 #define TTYLDISC_HOLD(disc) \
126 if (! TTYLDISC_ISSTATIC(disc)) { \
127 KASSERT((disc)->l_refcnt != UINT_MAX); \
128 (disc)->l_refcnt++; \
132 #define TTYLDISC_RELE(disc) \
134 if (! TTYLDISC_ISSTATIC(disc)) { \
135 KASSERT((disc)->l_refcnt != 0); \
136 (disc)->l_refcnt--; \
140 #define TTYLDISC_ISINUSE(disc) \
141 (TTYLDISC_ISSTATIC(disc) || (disc)->l_refcnt != 0)
180 struct linesw *disc;
182 LIST_FOREACH(disc, &ttyldisc_list, l_list) {
183 if (strcmp(name, disc->l_name) == 0)
184 return (disc);
197 struct linesw *disc;
200 disc = ttyldisc_lookup_locked(name);
201 if (disc != NULL)
202 TTYLDISC_HOLD(disc);
205 return (disc);
215 struct linesw *disc;
219 LIST_FOREACH(disc, &ttyldisc_list, l_list) {
220 if (disc->l_no == num) {
221 TTYLDISC_HOLD(disc);
223 return (disc);
236 ttyldisc_release(struct linesw *disc)
239 if (disc == NULL)
243 TTYLDISC_RELE(disc);
251 ttyldisc_assign_legacy_number(struct linesw *disc)
270 if (strcmp(disc->l_name, table[i].name) == 0) {
271 disc->l_no = table[i].num;
276 disc->l_no = TTYLDISC_LEGACY_NUMBER_MIN;
279 if (disc->l_no == ldisc->l_no) {
280 KASSERT(disc->l_no < TTYLDISC_LEGACY_NUMBER_MAX);
281 disc->l_no++;
290 ttyldisc_attach(struct linesw *disc)
293 KASSERT(disc->l_name != NULL);
294 KASSERT(disc->l_open != NULL);
295 KASSERT(disc->l_close != NULL);
296 KASSERT(disc->l_read != NULL);
297 KASSERT(disc->l_write != NULL);
298 KASSERT(disc->l_ioctl != NULL);
299 KASSERT(disc->l_rint != NULL);
300 KASSERT(disc->l_start != NULL);
301 KASSERT(disc->l_modem != NULL);
302 KASSERT(disc->l_poll != NULL);
305 if (strlen(disc->l_name) >= TTLINEDNAMELEN)
310 if (ttyldisc_lookup_locked(disc->l_name) != NULL) {
315 ttyldisc_assign_legacy_number(disc);
316 LIST_INSERT_HEAD(&ttyldisc_list, disc, l_list);
327 ttyldisc_detach(struct linesw *disc)
330 struct linesw *ldisc = ttyldisc_lookup(disc->l_name);
333 KASSERT(ldisc == disc);
339 if (TTYLDISC_ISINUSE(disc)) {
344 LIST_REMOVE(disc, l_list);