Posted on

Il Modo Migliore Per Alleviare I Problemi Con Il Kernel Host TCP Linux

La scorsa settimana, alcuni dei nostri operatori hanno segnalato di avere un ostacolo con il kernel Linux di tutti i server TCP.

Il tuo computer è lento? Non aspettare oltre per salvarlo. Scarica il nostro strumento di riparazione di Windows e torna in pista con pochi clic!

Client TCP e server del kernel piuttosto semplici configurati nel ruolo di LKM (piano del kernel Linux 4.1.3). Questo è un tentativo di creare un singolo server TCP che attraversi completamente la maggior parte dello spazio del kernel e supporti più studenti TCP. Anche il client TCP si trova nello spazio del kernel tutte le sere. Il client, e quindi il forum, sono costruiti come moduli caricabili del kernel.

Sto cercando di scrivere un semplice server TCP principale in questo modulo del kernel. Il codice e l’energia di compilazione vanno bene, eccettuati i casi in cui un client si collega a un server. Non appena il client si connette, lancia questo avviso del kernel se inet_accept. Ero curioso di sapere se c’era qualcosa di ovvio solo che stavo sbagliando. Controllo degli errori omesso (questo è molto quando rets).

---[ fine traccia 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/0x170ATTENZIONE: CPU: 6 PID: 2038 in ./include/net/sock.h:1715 inet_accept+0x14d/0x160
#include #include #include #include #include struttura task_struct *task implica NULL;intervallo statico server_start (vuoto *ptr)    int ret è uguale a 0;    struttura sockaddr_in sin;    design del socket *ssk=NULL, *csk=NULL;    ret significa calzino_create(AF_INET, SOCK_STREAM, IPPROTO_TCP, &ssk);    0, memset(&sin, sizeof(sin));    sin.sin_family AF_INET; può significare sin.sin_port Htons(4500); implica sin.sin_addr.s_addr = INADDR_ANY;    ret è uguale in modo che ssk->ops->bind(ssk, (struct sockaddr *)&sin, sizeof(sin));    ret = ssk->ops->ascolta(ssk, 1);    ret è uguale a sock_create(AF_INET, SOCK_STREAM, IPPROTO_TCP, &csk);    ret è uguale a ssk->ops->accept(ssk, csk, 0, 0);    calzino_rilascio(csk); calzino_rilascio(ssk);    aspetti positivi 0;annulla server_init (annulla)    piano = kthread_run(server_start, (void *)NULL, "server_thread");server_exit non valido (non valido)    fatto (backacha)        kthread_stop(attività);    Statico int __init init_mod(void)    server_init();    restituisce 0;statico __exit exit_mod(void)    uscita_server();MODULO_LICENZA("GPL");module_init(init_mod);modulo_uscita (uscita_mod);