walnux/include
yinshengkai f44a31c337 procfs: add memory pressure notification support
This is a memory monitoring interface implemented with reference to Linux's PSI (Pressure Stall Information),
which can send notifications when the system's remaining memory is below the threshold.

The following example code sets two different thresholds.
When the system memory is below 10MB, a notification is triggered.
When the system memory is below 20 MB, a notification (POLLPRI event) is triggered every 1s.

```
int main(int argc, FAR char *argv[])
{
  struct pollfd fds[2];
  int ret;

  if (argc == 2)
    {
      char *ptr = malloc(1024*1024*atoi(argv[1]));
      printf("Allocating %d MB\n", atoi(argv[1]));
      ptr[0] = 0;
      return 0;
    }

  fds[0].fd = open("/proc/pressure/memory", O_RDWR);
  fds[1].fd = open("/proc/pressure/memory", O_RDWR);
  fds[0].events = POLLPRI;
  fds[1].events = POLLPRI;

  dprintf(fds[0].fd, "%llu -1", 1024LLU*1024 * 10);
  dprintf(fds[1].fd, "%llu 1000000", 1024LLU*1024 * 20);

  while (1)
    {
      ret = poll(fds, 2, -1);
      if (ret > 0)
        {
          printf("Memory pressure: POLLPRI, %d\n", ret);
        }
    }

  return 0;
}
```

https://docs.kernel.org/accounting/psi.html
Signed-off-by: yinshengkai <yinshengkai@xiaomi.com>
2024-08-25 23:09:28 +08:00
..
android
arpa
crypto nuttx: fix multiple 'FAR', 'CODE' and style issues 2024-08-25 19:22:15 +08:00
cxx add rint and expm1 function to cmath from libm 2024-07-12 12:05:54 +08:00
net ioctl: add definitions related to ethtool 2023-11-03 22:37:50 +08:00
netinet netinet/in.h: add macro definitions to resolve compilation errors 2024-08-19 19:49:42 +08:00
netpacket net/netlink: Add RTM preifx notify support 2024-05-14 10:05:37 -03:00
nuttx procfs: add memory pressure notification support 2024-08-25 23:09:28 +08:00
ssp
sys nuttx: fix multiple 'FAR', 'CODE' and style issues 2024-08-25 19:22:15 +08:00
.gitignore .gitignore: add ignore 2024-03-14 22:47:55 +08:00
aio.h aio: change aio_fildes int type 2023-09-08 00:59:31 +03:00
alloca.h
assert.h assert: check COMPILE_TIME_ASSERT before define 2024-08-20 02:42:35 +08:00
byteswap.h
ctype.h Add basic support for locales in order to C++ streams to build and work for simple cases (POSIX / C locale). 2024-04-29 17:34:10 +08:00
debug.h include/debug.h: fix _alert log level error 2024-08-24 11:20:59 +08:00
dirent.h
dlfcn.h dlfcn: Add stub for dladdr 2024-07-26 14:39:10 -03:00
dsp.h libdsp: fix gcc14 error and clean up includes 2024-06-02 09:27:36 -03:00
dspb16.h libdsp: fix gcc14 error and clean up includes 2024-06-02 09:27:36 -03:00
elf.h coredump:support coredump aligned access registers 2024-08-12 02:02:25 +08:00
elf32.h
elf64.h Fix loading of ET_DYN type of shared objects 2023-09-20 09:35:28 -04:00
endian.h
err.h
errno.h
execinfo.h libc/execinfo: extract a common backtrace format function 2024-06-29 22:44:39 +08:00
fcntl.h include/fcntl.h: add O_LARGEFILE flags 2024-08-24 18:06:14 +08:00
fixedmath.h fixedmath: add abs and sign operations 2023-10-07 21:25:56 +08:00
fnmatch.h
ftw.h
getopt.h
glob.h
grp.h
hex2bin.h
iconv.h
ifaddrs.h
inttypes.h libs/libc/inttypes: add support for imaxdiv 2024-04-23 10:26:48 -03:00
iso646.h
langinfo.h The character U+ff0c "," could be confused with the ASCII character U+002c ",", which is more common in source code. 2023-10-03 16:53:12 -04:00
libgen.h
libintl.h
limits.h clock: replace all up_perf_xx with perf_xx 2023-10-02 16:11:43 +02:00
locale.h
lzf.h
malloc.h mm: record the maximum system memory usage 2023-11-09 09:08:49 +08:00
mqueue.h
netdb.h
nl_types.h
nxflat.h
obstack.h
poll.h
pthread.h pthread: add pthread_self/pthread_gettid_np function 2024-06-26 17:40:55 +08:00
pty.h
pwd.h
regex.h
resolv.h
sched.h sched.h: add SCHED_BATCH and SCHED_IDLE definition 2024-07-14 13:20:53 -03:00
search.h hcreate: add alloc/free func hook for user to deallocate memory 2024-08-22 20:25:30 +08:00
semaphore.h
signal.h sigaction: Expand si_user for non-kernel signals 2023-11-22 08:00:43 -08:00
spawn.h libs/libc/spawn: Add minimal implementation for posix_spawnattr_destory. 2023-10-31 13:42:00 +08:00
stdbool.h nuttx/atomic.h:Fix missing type declarations at compile time 2024-08-22 01:44:29 +08:00
stddef.h
stdint.h
stdio.h libc: add support for open_memstream 2023-11-29 02:13:19 -08:00
stdlib.h libc: add support for reallocarray 2024-04-17 11:36:39 -03:00
stdnoreturn.h
string.h
strings.h libc/lib_bzero:Add bzero prototype. 2024-05-07 14:59:05 +02:00
syscall.h
syslog.h
termios.h
threads.h Fix typo in mtx_timedlock 2024-02-02 09:03:18 -08:00
time.h libc:Add macro restrictions to code that uses floating point numbers 2024-08-21 13:33:45 +08:00
unistd.h unistd.h: Adds some posix supported definitions. 2024-06-19 20:47:49 +08:00
utime.h
uuid.h nuttx: fix multiple 'FAR', 'CODE' and style issues 2024-08-25 19:22:15 +08:00
wchar.h include/wchar:Fix mbstate_t Redeclaration in MSVC 2024-08-22 01:44:29 +08:00
wctype.h