htop/netbsd
Silke Hofstra 696f79fe50 Dynamically scale the ST_UID size to support 32-bit UIDs
While most Unix-like systems use 16-bit user IDs,
Linux supports 32-bit UIDs since version 2.6.
UIDs above 65535 are used for UID namespacing of containers,
where a container has its own set of 16-bit user IDs.
Processes in such containers will have (much) larger UIDs than 65535.

Because the current format strings for `ST_UID` and `USER`
are `%5d` and `%9d` respectively, processes with such UIDs
lead to misaligned columns.

Dynamically scale the `ST_UID` column and increase the size of `USER`
to 10 characters (length of UINT32_MAX) to ensure that the user ID always fits.

Additionally: clean up how the titlebuffer size calculation and ensure
the PID column has a minimum size of 5.
2021-10-27 21:20:59 +02:00
..
NetBSDProcess.c Dynamically scale the ST_UID size to support 32-bit UIDs 2021-10-27 21:20:59 +02:00
NetBSDProcess.h Update license headers to explicitly say GPLv2+ 2021-09-22 14:28:19 +02:00
NetBSDProcessList.c Memory leak on NetBSD when querying full command line 2021-10-03 19:18:25 +02:00
NetBSDProcessList.h Update license headers to explicitly say GPLv2+ 2021-09-22 14:28:19 +02:00
Platform.c Update license headers to explicitly say GPLv2+ 2021-09-22 14:28:19 +02:00
Platform.h Update license headers to explicitly say GPLv2+ 2021-09-22 14:28:19 +02:00
ProcessField.h Update license headers to explicitly say GPLv2+ 2021-09-22 14:28:19 +02:00
README.md netbsd: Add battery support 2021-08-05 10:47:14 +02:00

NetBSD support in htop(1)

This implementation utilizes kvm_getprocs(3), sysctl(3), etc, eliminating the need for mount_procfs(8) with Linux compatibility enabled.

The implementation was initially based on the OpenBSD support in htop(1).

Notes on NetBSD curses

NetBSD is one of the last operating systems to use and maintain its own implementation of Curses.

htop(1) can be compiled against either ncurses or NetBSD's curses(3). In order for NetBSD's libcurses to be used, htop(1) must be configured with --disable-unicode. This is necessary because htop(1) with Unicode enabled directly accesses ncurses's cchar_t struct, which has different contents in NetBSD's curses.

Versions of libcurses in NetBSD 9 and prior have no mouse support (this is an ncurses extension). Newer versions contain no-op mouse functions for compatibility with ncurses.

What needs improvement

  • Kernel and userspace threads are not displayed or counted - maybe look at NetBSD top(1).
  • Support for compiling using libcurses's Unicode support.
  • Support for fstat(1) (view open files, like lsof(8) on Linux).
  • Support for ktrace(1) (like strace(1) on Linux).