code: def bpf_select(fds_list, timeout=None):
      
  
      # Check file descriptors types
      bpf_scks_buffered = list()
      select_fds = list()
  
      for tmp_fd in fds_list:
  
          # Specific BPF sockets: get buffers status
          if isBPFSocket(tmp_fd) and tmp_fd.buffered_frames():
              bpf_scks_buffered.append(tmp_fd)
              continue
  
          # Regular file descriptors or empty BPF buffer
          select_fds.append(tmp_fd)
  
      if select_fds:
          # Call select for sockets with empty buffers
          if timeout is None:
              timeout = 0.05
          ready_list, _, _ = select(select_fds, [], [], timeout)
          return bpf_scks_buffered + ready_list
      else:
          return bpf_scks_buffered
docs: A call to recv() can return several frames. This functions hides the fact
         that some frames are read from the internal buffer.