Object.assign(window.search,{"doc_urls":["intro/index.html#introduction","intro/index.html#who-aya-is-for","intro/index.html#scope","intro/index.html#who-this-book-is-for","intro/index.html#assumptions-and-prerequisites","intro/index.html#other-resources","intro/index.html#how-to-use-this-book","intro/index.html#source-code","ebpf/index.html#ebpf-program-constraints","start/index.html#getting-started","start/development.html#development-environment","start/development.html#prerequisites","start/development.html#starting-a-new-project","start/hello-xdp.html#hello-xdp","start/hello-xdp.html#example-project","start/hello-xdp.html#ebpf-component","start/hello-xdp.html#permit-all","start/hello-xdp.html#verifying-the-program","start/hello-xdp.html#completed-program","start/hello-xdp.html#user-space-component","start/hello-xdp.html#starting-out","start/hello-xdp.html#the-lifecycle-of-an-ebpf-program","start/logging-packets.html#logging-packets","start/logging-packets.html#getting-data-to-user-space","start/logging-packets.html#sharing-data","start/logging-packets.html#ebpf-map-creation","start/logging-packets.html#userspace-map-creation","start/logging-packets.html#writing-data","start/logging-packets.html#generating-bindings-to-vmlinuxh","start/logging-packets.html#getting-packet-data-from-the-context","start/logging-packets.html#writing-data-to-the-map","start/logging-packets.html#reading-data","start/logging-packets.html#going-async","start/logging-packets.html#running-the-program"],"index":{"documentStore":{"docInfo":{"0":{"body":20,"breadcrumbs":2,"title":1},"1":{"body":65,"breadcrumbs":2,"title":1},"10":{"body":0,"breadcrumbs":6,"title":2},"11":{"body":51,"breadcrumbs":5,"title":1},"12":{"body":18,"breadcrumbs":7,"title":3},"13":{"body":0,"breadcrumbs":6,"title":2},"14":{"body":36,"breadcrumbs":6,"title":2},"15":{"body":0,"breadcrumbs":6,"title":2},"16":{"body":109,"breadcrumbs":5,"title":1},"17":{"body":62,"breadcrumbs":6,"title":2},"18":{"body":35,"breadcrumbs":6,"title":2},"19":{"body":18,"breadcrumbs":7,"title":3},"2":{"body":20,"breadcrumbs":2,"title":1},"20":{"body":180,"breadcrumbs":6,"title":2},"21":{"body":51,"breadcrumbs":7,"title":3},"22":{"body":21,"breadcrumbs":6,"title":2},"23":{"body":0,"breadcrumbs":8,"title":4},"24":{"body":104,"breadcrumbs":6,"title":2},"25":{"body":27,"breadcrumbs":7,"title":3},"26":{"body":20,"breadcrumbs":7,"title":3},"27":{"body":8,"breadcrumbs":6,"title":2},"28":{"body":216,"breadcrumbs":7,"title":3},"29":{"body":75,"breadcrumbs":8,"title":4},"3":{"body":27,"breadcrumbs":2,"title":1},"30":{"body":95,"breadcrumbs":7,"title":3},"31":{"body":0,"breadcrumbs":6,"title":2},"32":{"body":187,"breadcrumbs":6,"title":2},"33":{"body":47,"breadcrumbs":6,"title":2},"4":{"body":24,"breadcrumbs":3,"title":2},"5":{"body":36,"breadcrumbs":2,"title":1},"6":{"body":22,"breadcrumbs":3,"title":2},"7":{"body":6,"breadcrumbs":3,"title":2},"8":{"body":86,"breadcrumbs":6,"title":3},"9":{"body":13,"breadcrumbs":4,"title":2}},"docs":{"0":{"body":"Welcome to Building eBPF Programs with Aya: An introductory book about using the Rust Programming Language and Aya library to build extended Berkley Packet Filter (eBPF) programs.","breadcrumbs":"Introduction » Introduction","id":"0","title":"Introduction"},"1":{"body":"Rust is proving to be a popular systems programming language because of its safety features and excellent C interoperability. The safety features are less important in the context of eBPF as programs often need to read kernel memory, which is considered unsafe. However, what Rust combined with Aya does offer is a fast and efficient development experience: Cargo for project scaffolding, build, test and debugging Generation of Rust bindings to Kernel Headers with Compile-Once, Run-Everywhere (CO-RE) support Easy code sharing between user-space and eBPF programs Fast compile times No runtime dependency on LLVM or BCC","breadcrumbs":"Introduction » Who Aya Is For","id":"1","title":"Who Aya Is For"},"10":{"body":"","breadcrumbs":"Getting Started » Development Environment » Development Environment","i