Re: [PATCH 00/36] tty: type unifications -- part I.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 10 Aug 2023, Jiri Slaby (SUSE) wrote:

> Currently, the tty layer ops and functions use various types for same
> things:
> * characters and flags: unsigned char, char are used on a random basis,
> * counts: int, unsigned int, size_t are used, again more-or-less
>   randomly.
> 
> This makes it rather hard to remember where each type is required and it
> also makes the code harder to follow. Also the code has to do min_t() on
> many places simply because the variables hold the same kind of data, but
> of different type.
> 
> This is the first part of the series to unify the types:
> * make characters and flags 'u8'. This is what the hardware expects and
>   what feeds the tty layer with. Since we compile with -funsigned-char,
>   char and unsigned char are the same types on all platforms. So there
>   is no actual change in type.
> * make sizes/counts 'size_t'. This is what comes from the VFS layer and
>   some tty functions already operate on this. So instead of using
>   "shorter" (in term of bytes on 64bit) unsigned int, stick to size_t
>   and promote it to most places.
> 
> More cleanup and spreading will be done in tty_buffer, n_tty, and
> likely other places later.
>
> Patches 1-8 are cleanups only. The rest (the real switch) depends on
> those. 

Yeah, very much needed change and step into the right direction!

It's a bit tedious to review all this and comment a particular subchange 
but e.g. n_tty_receive_buf_common() still seems to still have int count 
which I think fall into the same call chain about size/count (probably 
most related change is #15). Note though that it also has room which I 
think can actually become negative so it might not be as straightforward 
search and replace like some other parts are.

At least for patches #1-#14,

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx>

> Jiri Slaby (SUSE) (36):
>   tty: xtensa/iss: drop unneeded tty_operations hooks
>   tty: ldisc: document that ldops are optional
>   tty: remove dummy tty_ldisc_ops::poll() implementations
>   tty: n_null: remove optional ldops
>   tty: change tty_write_lock()'s ndelay parameter to bool
>   tty: tty_port: rename 'disc' to 'ld'
>   tty: drop tty_debug_wait_until_sent()
>   tty: make tty_change_softcar() more understandable
>   tty: make tty_port_client_operations operate with u8
>   tty: make counts in tty_port_client_operations hooks size_t
>   tty: switch receive_buf() counts to size_t
>   tty: switch count in tty_ldisc_receive_buf() to size_t
>   tty: can327: unify error paths in can327_ldisc_rx()
>   tty: can327, move overflow test inside can327_ldisc_rx()'s loop
>   tty: make tty_ldisc_ops::*buf*() hooks operate on size_t
>   tty: use u8 for chars
>   tty: use u8 for flags
>   misc: ti-st: make st_recv() conforming to tty_ldisc_ops::receive_buf()
>   tty: make char_buf_ptr()/flag_buf_ptr()'s offset unsigned
>   tty: tty_buffer: make all offsets unsigned
>   tty: don't pass write() to do_tty_write()
>   tty: rename and de-inline do_tty_write()
>   tty: use min() in iterate_tty_write()
>   tty: use ssize_t for iterate_tty_read() returned type
>   tty: switch size and count types in iterate_tty_read() to size_t
>   tty: use min() for size computation in iterate_tty_read()
>   tty: propagate u8 data to tty_operations::write()
>   tty: propagate u8 data to tty_operations::put_char()
>   tty: make tty_operations::write()'s count size_t
>   tty: audit: unify to u8
>   tty: ldops: unify to u8
>   tty: hvc: convert counts to size_t
>   tty: vcc: convert counts to size_t
>   tty: gdm724x: convert counts to size_t
>   tty: hso: simplify hso_serial_write()
>   tty: rfcomm: convert counts to size_t
> 
>  arch/alpha/kernel/srmcons.c               |  5 +-
>  arch/m68k/emu/nfcon.c                     |  8 +--
>  arch/sparc/include/asm/vio.h              |  2 +-
>  arch/um/drivers/line.c                    |  2 +-
>  arch/um/drivers/line.h                    |  3 +-
>  arch/xtensa/platforms/iss/console.c       | 27 +--------
>  drivers/accessibility/speakup/spk_ttyio.c |  5 +-
>  drivers/bluetooth/hci_ldisc.c             | 15 ++---
>  drivers/char/ttyprintk.c                  |  5 +-
>  drivers/input/serio/serport.c             |  8 +--
>  drivers/ipack/devices/ipoctal.c           |  7 +--
>  drivers/isdn/capi/capi.c                  |  8 +--
>  drivers/misc/bcm-vk/bcm_vk_tty.c          |  5 +-
>  drivers/misc/ti-st/st_core.c              | 11 ++--
>  drivers/misc/ti-st/st_kim.c               |  6 +-
>  drivers/mmc/core/sdio_uart.c              |  4 +-
>  drivers/net/caif/caif_serial.c            |  2 +-
>  drivers/net/can/can327.c                  | 39 ++++++-------
>  drivers/net/can/slcan/slcan-core.c        |  5 +-
>  drivers/net/hamradio/6pack.c              |  4 +-
>  drivers/net/hamradio/mkiss.c              |  4 +-
>  drivers/net/mctp/mctp-serial.c            |  5 +-
>  drivers/net/ppp/ppp_async.c               | 26 +++------
>  drivers/net/ppp/ppp_synctty.c             | 26 +++------
>  drivers/net/slip/slip.c                   |  4 +-
>  drivers/net/usb/hso.c                     | 20 +++----
>  drivers/s390/char/con3215.c               |  6 +-
>  drivers/s390/char/con3270.c               |  6 +-
>  drivers/s390/char/sclp_tty.c              | 10 ++--
>  drivers/s390/char/sclp_vt220.c            |  6 +-
>  drivers/staging/gdm724x/gdm_tty.c         | 14 ++---
>  drivers/staging/greybus/uart.c            |  3 +-
>  drivers/tty/amiserial.c                   |  4 +-
>  drivers/tty/ehv_bytechan.c                |  4 +-
>  drivers/tty/goldfish.c                    |  7 +--
>  drivers/tty/hvc/hvc_console.c             |  4 +-
>  drivers/tty/hvc/hvcs.c                    | 10 ++--
>  drivers/tty/hvc/hvsi.c                    | 14 ++---
>  drivers/tty/ipwireless/hardware.c         |  2 +-
>  drivers/tty/ipwireless/tty.c              |  4 +-
>  drivers/tty/mips_ejtag_fdc.c              |  6 +-
>  drivers/tty/moxa.c                        |  8 +--
>  drivers/tty/mxser.c                       |  4 +-
>  drivers/tty/n_gsm.c                       | 14 ++---
>  drivers/tty/n_hdlc.c                      | 12 ++--
>  drivers/tty/n_null.c                      | 25 +--------
>  drivers/tty/n_tty.c                       | 59 ++++++++++----------
>  drivers/tty/nozomi.c                      |  6 +-
>  drivers/tty/pty.c                         |  2 +-
>  drivers/tty/rpmsg_tty.c                   |  5 +-
>  drivers/tty/serdev/serdev-ttyport.c       |  4 +-
>  drivers/tty/serial/kgdb_nmi.c             |  3 +-
>  drivers/tty/serial/serial_core.c          |  5 +-
>  drivers/tty/synclink_gt.c                 | 13 ++---
>  drivers/tty/tty.h                         |  8 +--
>  drivers/tty/tty_audit.c                   |  6 +-
>  drivers/tty/tty_buffer.c                  | 35 ++++++------
>  drivers/tty/tty_io.c                      | 46 +++++++---------
>  drivers/tty/tty_ioctl.c                   | 18 ++----
>  drivers/tty/tty_port.c                    | 34 ++++++------
>  drivers/tty/ttynull.c                     |  4 +-
>  drivers/tty/vcc.c                         | 18 +++---
>  drivers/tty/vt/selection.c                |  2 +-
>  drivers/tty/vt/vt.c                       |  6 +-
>  drivers/usb/class/cdc-acm.c               |  8 +--
>  drivers/usb/gadget/function/u_serial.c    |  6 +-
>  drivers/usb/host/xhci-dbgtty.c            |  7 +--
>  drivers/usb/serial/usb-serial.c           |  5 +-
>  include/linux/ti_wilink_st.h              |  2 +-
>  include/linux/tty_buffer.h                | 18 +++---
>  include/linux/tty_driver.h                |  9 ++-
>  include/linux/tty_flip.h                  | 22 ++++----
>  include/linux/tty_ldisc.h                 | 67 +++++++++++++++--------
>  include/linux/tty_port.h                  |  7 ++-
>  net/bluetooth/rfcomm/tty.c                |  9 +--
>  net/nfc/nci/uart.c                        | 15 ++---
>  sound/soc/codecs/cx20442.c                |  4 +-
>  sound/soc/ti/ams-delta.c                  |  2 +-
>  78 files changed, 381 insertions(+), 493 deletions(-)
> 
> 

-- 
 i.

[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux