Skip to content
  • Alexei Starovoitov's avatar
    bpf: introduce BPF syscall and maps · 99c55f7d
    Alexei Starovoitov authored
    
    
    BPF syscall is a multiplexor for a range of different operations on eBPF.
    This patch introduces syscall with single command to create a map.
    Next patch adds commands to access maps.
    
    'maps' is a generic storage of different types for sharing data between kernel
    and userspace.
    
    Userspace example:
    /* this syscall wrapper creates a map with given type and attributes
     * and returns map_fd on success.
     * use close(map_fd) to delete the map
     */
    int bpf_create_map(enum bpf_map_type map_type, int key_size,
                       int value_size, int max_entries)
    {
        union bpf_attr attr = {
            .map_type = map_type,
            .key_size = key_size,
            .value_size = value_size,
            .max_entries = max_entries
        };
    
        return bpf(BPF_MAP_CREATE, &attr, sizeof(attr));
    }
    
    'union bpf_attr' is backwards compatible with future extensions.
    
    More details in Documentation/networking/filter.txt and in manpage
    
    Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    99c55f7d