tcpdump mailing list archives
Re: libpcap : An entry in the manual about multithreading
From: Michael Richardson <mcr () sandelman ca>
Date: Sun, 07 May 2023 12:27:37 -0400
Frederick Virchanza Gotham <cauldwell.thomas () gmail com> wrote: > I think that there should be a page in the libpcap manual that > explicitly explains the multithreading capabilities and limitations. okay, that sounds reasonable. git clone https://github.com/the-tcpdump-group/tcpdump-htdocs > Some libraries have an entry in the manual stating that the library is > not threadsafe at all. Nine times out of ten, you're safe to use these > libraries from multiple threads so long as you use an exclusive lock. I don't think that libpcap has been tested in this way. I think it would work, and I don't think we use any thread local storage. > Some other libraries are thread-safe but the manual states that the > handle returned from the 'open' function can only be used by one > thread. This is where libpcap is. > I remember seeing a page somewhere on the internet that read something > along the lines of: "The libpcap library is thread-safe, i.e. multiple > threads can call libpcap functions concurrently. However once you've > obtained a handle from pcap_open_live, that handle can only be used > exclusively by one thread -- with the exception of the pcap_breakloop > function". I don't think we ever said this. > I think the debug build of libpcap should have runtime asserts to > ensure that the same thread is always operating on any given pcap_t* > handle. For example there could be a global map of pcap_t* handles to > thread ID's, something like: > struct Mapping { pcap_t *handle; pthread_t thread_id; }; > Mapping mappings[32u]; I could tolerate this. -- ] Never tell me the odds! | ipv6 mesh networks [ ] Michael Richardson, Sandelman Software Works | IoT architect [ ] mcr () sandelman ca http://www.sandelman.ca/ | ruby on rails [
_______________________________________________ tcpdump-workers mailing list -- tcpdump-workers () lists tcpdump org To unsubscribe send an email to tcpdump-workers-leave () lists tcpdump org %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
Current thread:
- libpcap : An entry in the manual about multithreading Frederick Virchanza Gotham (May 03)
- Re: libpcap : An entry in the manual about multithreading Michael Richardson (May 07)
- Re: libpcap : An entry in the manual about multithreading Guy Harris (May 11)
- Re: libpcap : An entry in the manual about multithreading Michael Richardson (May 07)