Age Owner TLA Line data Source code
1 : /*-------------------------------------------------------------------------
2 : *
3 : * pg_numa.h
4 : * Basic NUMA portability routines
5 : *
6 : *
7 : * Copyright (c) 2025, PostgreSQL Global Development Group
8 : *
9 : * IDENTIFICATION
10 : * src/include/port/pg_numa.h
11 : *
12 : *-------------------------------------------------------------------------
13 : */
14 : #ifndef PG_NUMA_H
15 : #define PG_NUMA_H
16 :
17 : extern PGDLLIMPORT int pg_numa_init(void);
18 : extern PGDLLIMPORT int pg_numa_query_pages(int pid, unsigned long count, void **pages, int *status);
19 : extern PGDLLIMPORT int pg_numa_get_max_node(void);
20 :
21 : #ifdef USE_LIBNUMA
22 :
23 : /*
24 : * This is required on Linux, before pg_numa_query_pages() as we
25 : * need to page-fault before move_pages(2) syscall returns valid results.
26 : */
27 : static inline void
67 tomas.vondra@postgre 28 CBC 106233 : pg_numa_touch_mem_if_required(void *ptr)
29 : {
30 : volatile uint64 touch pg_attribute_unused();
31 :
32 106233 : touch = *(volatile uint64 *) ptr;
33 106233 : }
34 :
35 : #else
36 :
37 : #define pg_numa_touch_mem_if_required(ptr) \
38 : do {} while(0)
39 :
40 : #endif
41 :
42 : #endif /* PG_NUMA_H */
|