Estoy modificando un kernel de Linux para agregar alguna funcionalidad al servidor virtual de Linux (LVS).¿Cómo usar los símbolos exportados opcionalmente solo si están presentes en un módulo Kernel de Linux insólito?
Desarrollé un módulo (al que llamé net/netfilter/ipvs/ip_vs_utils.c
) con algunas funciones que se utilizarán para equilibrar la carga. Todas las funciones aquí se exportan usando EXPORT_SYMBOL()
.
Este módulo, lógicamente no está cargado todo el tiempo. Mi intención es permitir que el usuario decida si quiere usar esta funcionalidad adicional o no (cargando o descargando el módulo).
Mi pregunta es ¿cómo podría invocar estas funciones opcionalmente, (dependiendo de si el módulo está funcionando o no) de un módulo existente (y, por supuesto modificado) (net/netfilter/ipvs/ip_vs_core.c
). Algo como esto:
if(ip_vs_utils_IsLoaded)
{
function1(arg1, arg2, arg3); // being function1 defined on ip_vs_utils.c
}
respuesta de Lai es bastante bueno si sus 'if (ip_vs_utils) 'código está destinado a estar en el kernel todo el tiempo; pero si ese código está ubicado en otro módulo cargable, probablemente la mejor opción sea la dependencia simple del módulo. Ver 'depmod (8)' para detalles completos. – sarnold