Welcome to the Linux Foundation Forum!

[BPF][Userspace] Variables with mutable size

One of most important thing with BPF is it is low-level assmebly-like language, but with restrictions and kernel/library could compile it to native code. Kernel compile it to native in true.

What I will describe is idea to deliver code with variables without fixed size. Userspace program could deliver BPF code and set this size, when compiling. VM could do some magic to makes it working. For example - with overlap and increase next piece of variable, when addition. The same with other math.

Why? Imagine a game with strategic 2D map. When player setup a new game, he/she enters world size, so game could set size of x/y dimension, so each variable contains coordinates part, would have enough size (and it would not be too big).

Another example is DBMS, like mariadb. It could increase some index variable, when read DB schema with primary key too big.

One thing, which could be hard is recompiling. For example: index could overlap, so program asks VM to resize variables contains index. But... what about pointers. Is one of thing, which could be hard to realize.

What do you think?


  • I think that saving version number globally + global version number near each pointer makes the trick. Also, each pointer will be saved size/step, start position, index and field number. Also, it contains real value. We must also remember meta-information about types. Normally - we use real value, but after recompiling (version number mismatch), we use these information to calculate new pointer value. Of course, we could also store pointer type to save up memory, so size/step, start position will be kept together.


Upcoming Training