iovisor / bcc

BCC - Tools for BPF-based Linux IO analysis, networking, monitoring, and more

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BPF.ring_buffer_poll(timeout=T) documentation ambigious

AITleo opened this issue · comments

The documentation about the timeout for BPF.ring_buffer_poll(timeout=T) is unclear.
At least for me.

It states:

The timeout parameter is optional and measured in milliseconds. In its absence, polling continues until there is no more data or the callback returns a negative value.

From reading this I get an understanding, that if there is no timeout specified and no data available in the ringbuffer (yet), the function would not block but return immediately.

My experiments on the other hand show that it does block indefinitely and waits for data.

For my use case supplying a timeout fixes the problem,
but may I suggest to be more precise in the documentation?

I am talking about this line here.

My experiments on the other hand show that it does block indefinitely and waits for data.

Could you give more specifics on blocking indefinitely?

Indefinitely is of course an overstatement, but when running the python program with debugger it shows that it hangs at this call.
I of course only waited a few seconds before killing my program,
but how I interpret the documentation is that without timeout it would either read from the buffer and return or if it is empty just return and never wait.