Documented in 1 files:

Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 4 files:

Smatch caller information:

drivers/tty/n_gsm.c gsmld_output() -> tty_write_room()

Type Parameter Key Value
PARAM_VALUE 0 tty 4096-ptr_max
PREEMPT_ADD
LOCK2 &gsm->tx_lock
LOCK2 flags
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct gsm_mux)->tx_lock

drivers/tty/n_gsm.c gsmld_poll() -> tty_write_room()

Type Parameter Key Value
PARAM_VALUE 0 tty 4096-ptr_max
PARAM_VALUE 0 tty->disc_data 4096-ptr_max
PARAM_VALUE 0 tty->ldisc 1-u64max
PARAM_VALUE 0 tty->ldisc_sem.dep_map->name 0-255
PARAM_VALUE 0 tty->ldisc_sem.read_wait.next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.next->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->next->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->prev 4096-ptr_max
PARAM_VALUE 0 tty->read_wait.head.next->next 4096-ptr_max
PARAM_VALUE 0 tty->read_wait.head.next->prev 4096-ptr_max
PARAM_VALUE 0 tty->read_wait.head.prev->next 4096-ptr_max
PARAM_VALUE 0 tty->read_wait.head.prev->next->next 4096-ptr_max
PARAM_VALUE 0 tty->read_wait.lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 tty->write_wait.head.next->next 4096-ptr_max
PARAM_VALUE 0 tty->write_wait.head.next->prev 4096-ptr_max
PARAM_VALUE 0 tty->write_wait.head.prev->next 4096-ptr_max
PARAM_VALUE 0 tty->write_wait.head.prev->next->next 4096-ptr_max
PARAM_VALUE 0 tty->write_wait.lock.rlock.dep_map->name 0-255
DATA_SOURCE 0 tty $0
RX_PATH
TASK_NOT_RUNNING
LOCK2 0 &tty->ldisc_sem
HALF_LOCKED2 &kvm->irq_srcu
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 &vm->irqfds_lock
HALF_LOCKED2 global &irqfds_srcu
TYPE_LOCK (struct tty_struct)->ldisc_sem

drivers/tty/n_gsm.c gsmld_write() -> tty_write_room()

Type Parameter Key Value
PARAM_VALUE 0 tty 4096-ptr_max
PARAM_VALUE 0 tty->atomic_write_lock.dep_map->name 0-255
PARAM_VALUE 0 tty->atomic_write_lock.first_waiter 0,4096-ptr_max
PARAM_VALUE 0 tty->atomic_write_lock.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 tty->atomic_write_lock.osq.tail.counter 0-s32max
PARAM_VALUE 0 tty->disc_data 1-u64max
PARAM_VALUE 0 tty->ldisc 1-u64max
PARAM_VALUE 0 tty->ldisc_sem.dep_map->name 0-255
PARAM_VALUE 0 tty->ldisc_sem.read_wait.next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.next->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->next->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->prev 4096-ptr_max
PARAM_VALUE 0 tty->ops 4096-ptr_max
PARAM_VALUE 0 tty->ops->write 4096-ptr_max
PARAM_VALUE 0 tty->ops->write_room 0,4096-ptr_max
PARAM_VALUE 0 tty->termios_rwsem.first_waiter->handoff_set 0-1
PARAM_VALUE 0 tty->termios_rwsem.first_waiter->type 0-1
BUF_SIZE 0 tty->write_buf (-1),1024-65536
CAPPED_DATA 0 tty 1
DATA_SOURCE 0 tty $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 tty->write_cnt 1025-u16max[c]
LOCK2 &gsm->tx_lock
LOCK2 flags
LOCK2 0 &tty->atomic_write_lock
LOCK2 0 &tty->ldisc_sem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct gsm_mux)->tx_lock
TYPE_LOCK (struct tty_struct)->atomic_write_lock
TYPE_LOCK (struct tty_struct)->ldisc_sem

drivers/accessibility/speakup/spk_ttyio.c spk_ttyio_synth_immediate() -> tty_write_room()

Type Parameter Key Value
PARAM_VALUE 0 tty 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->write_room 0,4096-ptr_max
BUF_SIZE 0 tty 1816
RX_PATH
TASK_NOT_RUNNING
LOCK2 global &spk_mutex

drivers/tty/n_tty.c __process_echoes() -> tty_write_room()

Type Parameter Key Value
PARAM_VALUE 0 tty 4096-ptr_max
PARAM_VALUE 0 tty->disc_data 4096-ptr_max
PARAM_VALUE 0 tty->link->termios_rwsem.first_waiter->handoff_set 0-1
PARAM_VALUE 0 tty->link->termios_rwsem.first_waiter->type 0-1
PARAM_VALUE 0 tty->ops->break_ctl 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->chars_in_buffer 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->cleanup 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->close 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->compat_ioctl 0,1607379221601308672,5008286898947497984,6364353445524312064
PARAM_VALUE 0 tty->ops->flush_buffer 0,759512161776693248,1438963212235436032,3037852187181395968,3356400052838694912,4884767172415688704,8736245651927326720,8787202642060013568
PARAM_VALUE 0 tty->ops->flush_chars 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->get_icount 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->get_serial 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->hangup 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->install 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->ioctl 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->ldisc_ok 0,6843386834578624512
PARAM_VALUE 0 tty->ops->lookup 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->open 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->poll_get_char 0,4172584550987694080,8810588628199956480
PARAM_VALUE 0 tty->ops->poll_init 0,1455831725284642816,7005422354281586688
PARAM_VALUE 0 tty->ops->poll_put_char 0,317088091350007808,4944462343817641984
PARAM_VALUE 0 tty->ops->proc_show 0,356236415985979392,5729891321464528896,9011853526131630080
PARAM_VALUE 0 tty->ops->put_char 0,46317935159074816,946511232463630336,5234932001147445248,6499862429192966144,7134038662404317184
PARAM_VALUE 0 tty->ops->remove 0,384629141214146560,3489019467251376128
PARAM_VALUE 0 tty->ops->resize 0,2815742157479378944,7598537204212207616
PARAM_VALUE 0 tty->ops->send_xchar 0,2462859047340216320,4708555404674125824,8710759130855649280
PARAM_VALUE 0 tty->ops->set_ldisc 0,1741587377620623360
PARAM_VALUE 0 tty->ops->set_serial 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->set_termios 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->show_fdinfo 0,5525676422896762880
PARAM_VALUE 0 tty->ops->shutdown 0,3518621193109893120,5469287042401259520
PARAM_VALUE 0 tty->ops->start 0,251324532200828928,1038803386632884224,1167599979921588224,1380472159287435264,2505730045728698368
PARAM_VALUE 0 tty->ops->stop 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->throttle 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->tiocmget 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->tiocmset 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->unthrottle 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->wait_until_sent 0,2578158375326154752,2614800216018440192,6874988682411192320,7074827580452507648,7916194843820081152
PARAM_VALUE 0 tty->ops->write 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->write_room 0,4096-ptr_max
PARAM_VALUE 0 tty->termios_rwsem.first_waiter->handoff_set 0-1
PARAM_VALUE 0 tty->termios_rwsem.first_waiter->type 0-1
BUF_SIZE 0 tty s32min,(-1),1-s32max
BUF_SIZE 0 tty s32min,(-1),1-s32max
BUF_SIZE 0 tty->write_buf (-1),1024-65536
CAPPED_DATA 0 tty 1
DATA_SOURCE 0 tty $0
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 tty->termios.c_cflag 0-u32max[c]
USER_DATA 0 tty->termios.c_iflag 0-u32max[c]
USER_DATA 0 tty->termios.c_ispeed 0-u32max
USER_DATA 0 tty->termios.c_lflag 0-u32max[c]
USER_DATA 0 tty->termios.c_line 0-255
USER_DATA 0 tty->termios.c_oflag 0-u32max[c]
USER_DATA 0 tty->termios.c_ospeed 0-u32max
USER_DATA 0 tty->write_cnt 1025-u16max[c]
NO_OVERFLOW_SIMPLE 0 tty->driver_data->d_fsdata
NO_OVERFLOW_SIMPLE 0 tty->driver_data->d_fsdata->d_fsdata
NO_OVERFLOW_SIMPLE 0 tty->name
USER_PTR 0 tty->disc_data->priv->rx_skb->data
LOCK2 _T->lock
HALF_LOCKED2 0 &tty->atomic_write_lock
HALF_LOCKED2 0 &tty->ldisc_sem
HALF_LOCKED2 0 &tty->legacy_mutex
HALF_LOCKED2 0 &tty->port->buf.lock
HALF_LOCKED2 0 &tty->termios_rwsem

drivers/tty/n_tty.c n_tty_poll() -> tty_write_room()

Type Parameter Key Value
PARAM_VALUE 0 tty 4096-ptr_max
PARAM_VALUE 0 tty->disc_data 4096-ptr_max
PARAM_VALUE 0 tty->ldisc 1-u64max
PARAM_VALUE 0 tty->ldisc_sem.dep_map->name 0-255
PARAM_VALUE 0 tty->ldisc_sem.read_wait.next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.next->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->next->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->prev 4096-ptr_max
PARAM_VALUE 0 tty->link 4096-ptr_max
PARAM_VALUE 0 tty->ops 4096-ptr_max
PARAM_VALUE 0 tty->ops->write 4096-ptr_max
PARAM_VALUE 0 tty->port->buf.work.lockdep_map->name 0-255
PARAM_VALUE 0 tty->read_wait.head.next->next 4096-ptr_max
PARAM_VALUE 0 tty->read_wait.head.next->prev 4096-ptr_max
PARAM_VALUE 0 tty->read_wait.head.prev->next 4096-ptr_max
PARAM_VALUE 0 tty->read_wait.head.prev->next->next 4096-ptr_max
PARAM_VALUE 0 tty->read_wait.lock.rlock.dep_map->name 0-255
PARAM_VALUE 0 tty->write_wait.head.next->next 4096-ptr_max
PARAM_VALUE 0 tty->write_wait.head.next->prev 4096-ptr_max
PARAM_VALUE 0 tty->write_wait.head.prev->next 4096-ptr_max
PARAM_VALUE 0 tty->write_wait.head.prev->next->next 4096-ptr_max
PARAM_VALUE 0 tty->write_wait.lock.rlock.dep_map->name 0-255
DATA_SOURCE 0 tty $0
RX_PATH
TASK_NOT_RUNNING
LOCK2 0 &tty->ldisc_sem
HALF_LOCKED2 &kvm->irq_srcu
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 &vm->irqfds_lock
HALF_LOCKED2 global &irqfds_srcu
TYPE_LOCK (struct tty_struct)->ldisc_sem

drivers/tty/n_tty.c process_output() -> tty_write_room()

Type Parameter Key Value
PARAM_VALUE 0 tty 4096-ptr_max
PARAM_VALUE 0 tty->atomic_write_lock.dep_map->name 0-255
PARAM_VALUE 0 tty->atomic_write_lock.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 tty->atomic_write_lock.first_waiter->list.prev->prev 5159360019465732096
PARAM_VALUE 0 tty->disc_data 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.dep_map->name 0-255
PARAM_VALUE 0 tty->ldisc_sem.read_wait.next->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->next->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->prev 4096-ptr_max
PARAM_VALUE 0 tty->ops 4096-ptr_max
PARAM_VALUE 0 tty->ops->flush_chars 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->write 4096-ptr_max
PARAM_VALUE 0 tty->ops->write_room 0,4096-ptr_max
PARAM_VALUE 0 tty->termios_rwsem.first_waiter->handoff_set 0-1
PARAM_VALUE 0 tty->termios_rwsem.first_waiter->type 0-1
PARAM_VALUE 0 tty->write_wait.lock.rlock.dep_map->name 0-255
BUF_SIZE 0 tty->write_buf (-1),1024-65536
CAPPED_DATA 0 tty 1
DATA_SOURCE 0 tty $1
BIT_INFO 0 tty->termios.c_oflag 0x1,0xffffffffffffffff
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 tty->write_cnt 1025-u16max[c]
LOCK2 _T->lock
LOCK2 0 &tty->atomic_write_lock
LOCK2 0 &tty->ldisc_sem
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 0 &tty->termios_rwsem
TYPE_LOCK (struct tty_struct)->atomic_write_lock
TYPE_LOCK (struct tty_struct)->ldisc_sem

drivers/tty/n_tty.c process_output_block() -> tty_write_room()

Type Parameter Key Value
PARAM_VALUE 0 tty 4096-ptr_max
PARAM_VALUE 0 tty->atomic_write_lock.dep_map->name 0-255
PARAM_VALUE 0 tty->atomic_write_lock.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 tty->atomic_write_lock.first_waiter->list.prev->prev 5159360019465732096
PARAM_VALUE 0 tty->ldisc_sem.dep_map->name 0-255
PARAM_VALUE 0 tty->ldisc_sem.read_wait.next->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->next->next 4096-ptr_max
PARAM_VALUE 0 tty->ldisc_sem.read_wait.prev->prev 4096-ptr_max
PARAM_VALUE 0 tty->ops->flush_chars 0,4096-ptr_max
PARAM_VALUE 0 tty->ops->write 4096-ptr_max
PARAM_VALUE 0 tty->ops->write_room 0,4096-ptr_max
PARAM_VALUE 0 tty->termios_rwsem.first_waiter->handoff_set 0-1
PARAM_VALUE 0 tty->termios_rwsem.first_waiter->type 0-1
PARAM_VALUE 0 tty->write_wait.lock.rlock.dep_map->name 0-255
BUF_SIZE 0 tty->write_buf (-1),1024-65536
CAPPED_DATA 0 tty 1
DATA_SOURCE 0 tty $0
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 tty->write_cnt 1025-u16max[c]
LOCK2 _T->lock
LOCK2 0 &tty->atomic_write_lock
LOCK2 0 &tty->ldisc_sem
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 0 &tty->termios_rwsem
TYPE_LOCK (struct tty_struct)->atomic_write_lock
TYPE_LOCK (struct tty_struct)->ldisc_sem