Vielleicht möchten Sie Ihren eigenen benutzerdefinierten sk_buff
-Handler schreiben, der den kernel_select()
aufruft, der versucht, den Semaphor zu sperren, und eine Blockierung wartet, wenn der Socket geöffnet ist.
Nicht sicher, ob Sie diesen Link bereits durchlaufen haben Simulieren Sie den Effekt von select()
und poll()
in der Kernel-Socket-Programmierung
Auf der Kernel-Seite ist es leicht zu vermeiden, sys_epoll()
interface outright zu verwenden. Schließlich haben Sie direkten Zugriff auf Kernel-Objekte, ohne durch die Ringe springen zu müssen.
Jedes file
-Objekt, einschließlich Sockets, "überschreibt" eine Poll-Methode in seinem file_operations
"vtable". Sie können einfach alle Ihre Sockets umschlingen, ->poll()
auf jedem von ihnen aufrufen und periodisch oder wenn keine Daten verfügbar sind.
Wenn die Sockets ziemlich viel Verkehr haben, brauchen Sie nichts mehr als das.
Eine Anmerkung zur API:
Die Methode poll()
erfordert ein Argument poll_table()
. Wenn Sie jedoch nicht darauf warten möchten, kann sie mit null initialisiert werden:
Wenn Sie warten möchten, spielen Sie einfach mit dem Callback in poll_table
by init_poll_funcptr()
.
Tags und Links linux linux-kernel