Domanda

Sto scrivendo un'estensione del kernel di rete per il filtro socket. Per renderlo configurabile, un programma Userland legge un file di configurazione e passa le informazioni a Kext tramite un PF_SYSTEM PRESA.

Se voglio avere il filtro socket attivo e funzionante il prima possibile all'avvio del sistema, come coreografo il lancio?

La mia idea attuale è quella di utilizzare LaunchD per avviare un piccolo programma di inizializzatore dell'utente. Questo programma userebbe kextload Per avviare il kext. Successivamente, avrebbe letto il file di configurazione e parlerebbe con Kext attraverso il PF_SYSTEM PRESA. Avendo fatto il suo lavoro, sarebbe poi uscito rapidamente.

Un'altra opzione sarebbe quella di avere due launchd elementi, uno per Kext (usando kextload) e un altro per il lettore di file di configurazione di Userland. Ciò eviterebbe la forchetta, ma altrimenti sarebbe identico. In entrambi i casi, launchd Dovrebbe eseguire un rapido programma Userland non DAEMON.

Tuttavia, launchd Sembra essere orientato al lancio di demoni reali, non per compiti rapidi che svolgono il loro lavoro e l'uscita. Il Documento della biblioteca degli sviluppatori dice:

Importante: Se il tuo demone si spegne troppo rapidamente dopo essere stato lanciato, il lancio potrebbe pensare che si sia schiantato. I demoni che continuano questo comportamento possono essere sospesi e non sono stati nuovamente lanciati quando arrivano le richieste future. Per evitare questo comportamento, non chiudere per almeno 10 secondi dopo il lancio.

Questo mi dà l'impressione che launchd non è il modo corretto per farlo. Come dovrei organizzare il lancio? La mia intera idea sta andando nella direzione sbagliata?

(Come nota a margine, voglio dare all'utente la possibilità di modificare anche le opzioni di filtraggio durante il runtime. Immagino che questo possa essere fatto semplicemente aprendo una nuova connessione socket PF_System al KEXT ogni volta che sono necessarie modifiche.)

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top