# Symbols defined in the library which aren't specifically bound to a # version node are effectively bound to an unspecified base version of # the library. It is possible to bind all otherwise unspecified symbols # to a given version node using `global: *' somewhere in the version script. # # The interfaces at the "v1" level. # At this level we present these functions to the linker (and thus to an # application). # Any functions not defined in the global list (i.e. "local") will be internal # to the library (i.e. not exported but used within the library). # Thus the real function names, "numa_bind_v1" etc, are local and won't # be known to the linker. # the first 16 have v1 aliases # 3 of the 5 system calls that libnuma provides are common to all versions: libnuma_1.1 { global: set_mempolicy; get_mempolicy; mbind; numa_all_nodes; numa_alloc; numa_alloc_interleaved; numa_alloc_interleaved_subset; numa_alloc_local; numa_alloc_onnode; numa_available; numa_bind; numa_distance; numa_error; numa_exit_on_error; numa_free; numa_get_interleave_mask; numa_get_interleave_node; numa_get_membind; numa_get_run_node_mask; numa_interleave_memory; numa_max_node; numa_migrate_pages; numa_no_nodes; numa_node_size64; numa_node_size; numa_node_to_cpus; numa_pagesize; numa_parse_bitmap; numa_police_memory; numa_preferred; numa_run_on_node; numa_run_on_node_mask; numa_sched_getaffinity; numa_sched_setaffinity; numa_set_bind_policy; numa_set_interleave_mask; numa_set_localalloc; numa_set_membind; numa_set_preferred; numa_set_strict; numa_setlocal_memory; numa_tonode_memory; numa_tonodemask_memory; numa_warn; numa_exit_on_warn; numa_node_to_cpu_update; local: *; }; # The interfaces at the "v2" level. # The first 17 have v2 aliases # We add the bitmask_ functions # and the move_pages and migrate_pages system calls # 1.2 depends on 1.1 libnuma_1.2 { global: copy_bitmask_to_nodemask; copy_nodemask_to_bitmask; copy_bitmask_to_bitmask; move_pages; migrate_pages; numa_all_cpus_ptr; numa_all_nodes_ptr; numa_alloc_interleaved_subset; numa_realloc; numa_allocate_cpumask; numa_allocate_nodemask; numa_bind; numa_bitmask_alloc; numa_bitmask_clearall; numa_bitmask_clearbit; numa_bitmask_equal; numa_bitmask_free; numa_bitmask_isbitset; numa_bitmask_nbytes; numa_bitmask_setall; numa_bitmask_setbit; numa_bitmask_weight; numa_get_interleave_mask; numa_get_membind; numa_get_mems_allowed; numa_get_run_node_mask; numa_interleave_memory; numa_max_possible_node; numa_move_pages; numa_no_nodes_ptr; numa_node_to_cpus; numa_node_of_cpu; numa_nodes_ptr; numa_num_configured_cpus; numa_num_configured_nodes; numa_num_possible_nodes; numa_num_task_cpus; numa_num_task_nodes; numa_num_thread_cpus; numa_num_thread_nodes; numa_parse_bitmap; numa_parse_cpustring; numa_parse_nodestring; numa_run_on_node_mask; numa_sched_getaffinity; numa_sched_setaffinity; numa_set_interleave_mask; numa_set_membind; numa_tonodemask_memory; local: *; } libnuma_1.1; # New parsing interface for cpu/numastrings # was added into version 1.3 libnuma_1.3 { global: numa_parse_cpustring_all; numa_parse_nodestring_all; numa_num_possible_cpus; local: *; } libnuma_1.2; # New interface with customizable cpuset awareness # was added into version 1.4 libnuma_1.4 { global: numa_run_on_node_mask_all; local: *; } libnuma_1.3; # New interface for membind with NUMA balancing optimization libnuma_1.5 { global: numa_set_membind_balancing; local: *; } libnuma_1.4; libnuma_1.6{ global: numa_has_preferred_many; numa_set_preferred_many; numa_preferred_many; local: *; } libnuma_1.5; libnuma_1.7{ global: numa_has_home_node; numa_set_mempolicy_home_node; local: *; } libnuma_1.6; libnuma_2.1{ global: numa_set_weighted_interleave_mask; local: *; } libnuma_1.7;