# 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;
  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;
    set_mempolicy;
    get_mempolicy;
    mbind;
    move_pages;
    migrate_pages;
    numa_all_cpus_ptr;
    numa_all_nodes_ptr;
    numa_alloc;
    numa_alloc_interleaved;
    numa_alloc_interleaved_subset;
    numa_alloc_local;
    numa_alloc_onnode;
    numa_realloc;
    numa_allocate_cpumask;
    numa_allocate_nodemask;
    numa_available;
    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_distance;
    numa_error;
    numa_exit_on_error;
    numa_free;
    numa_get_interleave_mask;
    numa_get_interleave_node;
    numa_get_membind;
    numa_get_mems_allowed;
    numa_get_run_node_mask;
    numa_interleave_memory;
    numa_max_node;
    numa_max_possible_node;
    numa_migrate_pages;
    numa_move_pages;
    numa_no_nodes_ptr;
    numa_node_size64;
    numa_node_size;
    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_pagesize;
    numa_parse_bitmap;
    numa_parse_cpustring;
    numa_parse_nodestring;
    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;
  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;
