Supponiamo di aver registrato un'interfaccia netlink generica utilizzando genl_register_family_with_ops
con più callback.Linux Kernel Netlink generico - È simultaneo?
Non vedo alcun avviso a riguardo e presumo che le richiamate siano chiamate in serie ma non ci sono informazioni su come i callback non vengano nemmeno chiamati.
È possibile che più richiami vengano chiamati contemporaneamente sulla stessa interfaccia di netlink generica che ho registrato? Ho bisogno di una sincronizzazione tra i callback?
per rendere la domanda più semplice:
Può un singolo callback netlink essere prevaricata o contemporaneamente eseguito in due core?
Le chiamate vengono richiamate quando si verifica un evento. Se un altro evento si verifica prima della fine del callback, si otterrà una chiamata sovrapposta. – stark
@stark Mi sto chiedendo in particolare se posso ottenere due eventi sulla stessa registrazione della famiglia netlink che può fare in modo che i callback si sovrappongano. Esiste una sola registrazione con più callback. I callback di Netlink modificheranno le stesse strutture e le strutture saranno modificate/accessibili solo tramite callback netlink. – Etherealone
@Etherealone Sospetto che la risposta sia configurabile, ma disattivata per impostazione predefinita. Nella mia copia delle fonti del kernel 3.11, la 'struct genl_family' contiene un' bool parallel_ops'. In 'linux-3.11.10-21/net/netlink/genetlink.c: 674' o nearabouts, in' genl_rcv_msg() ', se questo flag non è impostato, allora un mutex globale è bloccato, la richiesta viene elaborata, e il mutex globale sbloccato. Se è impostato, questo blocco non si verifica. –