<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Bpf on viveksb007</title><link>http://viveksb.dev/tags/bpf/</link><description>Recent content in Bpf on viveksb007</description><generator>Hugo -- 0.147.8</generator><language>en-us</language><lastBuildDate>Sat, 02 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://viveksb.dev/tags/bpf/index.xml" rel="self" type="application/rss+xml"/><item><title>BPF Loading: From C Source to Kernel</title><link>http://viveksb.dev/2026/05/bpf-load-c-to-kernel/</link><pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate><guid>http://viveksb.dev/2026/05/bpf-load-c-to-kernel/</guid><description>&lt;p>In this post, we are going to learn how BPF code written in C is loaded into the Linux kernel. We will deep dive into everything that happens in the process of turning C source code into a running kernel program.&lt;/p>
&lt;p>Before diving into the details, there are some prerequisites. I will briefly touch on each concept so we are all on the same page.&lt;/p>
&lt;h2 id="what-is-an-elf">What is an ELF?&lt;/h2>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> This section introduces ELF concepts in the abstract. If terms like &amp;ldquo;relocation entries&amp;rdquo; or &amp;ldquo;symbol table&amp;rdquo; feel fuzzy on first read, don&amp;rsquo;t worry — they will click once we inspect a real compiled ELF in the &lt;a href="#inspecting-the-elf-with-readelf">Inspecting the ELF with readelf&lt;/a> section. Come back here as a reference when you need it.&lt;/p></description></item></channel></rss>