Posted on

Der Beste Weg, Um Probleme Mit Dem Kernel Des Linux-TCP-Webservers Zu Beheben

Letzte Woche berichteten einige unserer Süchtigen, dass sie eine Fehlfunktion mit dem Linux-Kernel aller TCP-Server hatten.

Ihr Computer läuft langsam? Warten Sie nicht länger, um es zu retten. Laden Sie unser Windows-Reparaturtool herunter und machen Sie sich mit wenigen Klicks wieder auf den Weg!

Ziemlich einfacher TCP-Client und Kernel-Server, der so konfiguriert ist, dass LKM (Linux-Kernel-Plan 4.1.3) angezeigt wird. Dies ist ein Versuch, Ihren eigenen TCP-Server zu erstellen, der Ihren aktuellen Kernel-Bereich vollständig durchquert und mehrere TCP-Studenten unterstützt. Der TCP-Client verbringt auch jede Minute Zeit im Kernel-Space. Der Client und damit der Computer sind als ladbare Kernelmodule aufgebaut.

Ich versuche, den neuen einfachen TCP-Server in dieses Kernelmodul zu schreiben. Die Code- und Kompilierungsaufgaben sind in Ordnung, außer in Fällen, in denen sich ein Client mit einem Server verbindet. Sobald sich der Client verbindet, löst er die spezielle Kernel-Warnung aus, wenn inet_accept. Ich war neugierig, ob es etwas Offensichtliches gab, in dem ich falsch gehandelt habe. Ausgelassene Fehlerprüfung (das ist viel, wenn oder wenn rets).

---[ end trace 343bcc83461e314f ]--- ret_from_fork+0x35/0x40  ? SyS_exit_group+0x10/0x10  ? ! ? do_syscall_64+0x74/0x190  ? kthread_create_on_node+0x70/0x70 kthread+0x113/0x130server_start+0x138/0x170WARNUNG: CPU: 9 PID: 2038 in ./include/net/sock.h:1715 inet_accept+0x14d/0x160
#include #include #include #include #include Struktur task_struct *task bedeutet NULL;statisches Intervall server_start (void *ptr)    int ret gleich 0;    struct sockaddr_in sin;    Socket-Konstrukt *ssk=NULL, *csk=NULL;    ret gleich sock_create(AF_INET, SOCK_STREAM, IPPROTO_TCP, &ssk);    0, memset(&sin, sizeof(sin));    sin.sin_family AF_INET; typischerweise sin.sin_port Htons(4500); impliziert sin.sin_addr.s_addr = INADDR_ANY;    ret ist gleich help ssk->ops->bind(ssk, (struct sockaddr *)&sin, sizeof(sin));    ret = ssk->ops->listen(ssk, 1);    ret ist gleich sock_create(AF_INET, SOCK_STREAM, IPPROTO_TCP, &csk);    ret ist gleich ssk->ops->accept(ssk, csk, 0, 0);    socke_release(csk); sock_release(ssk);    Leistungen 0;Abbrechen server_init (abbrechen)    Ansatz = kthread_run(server_start, (void *)NULL, "server_thread");ungültig server_exit (ungültig)    spezifiziert (Backacha)        kthread_stop (Aufgabe);    Statisch int __init init_mod(void)    server_init();    gibt nackte 0 zurück;statisch __exit exit_mod(void)    server_exit();MODULE_LICENSE("GPL");module_init(init_mod);module_output (output_mod);