Linux Sanal Sunucusuna (LVS) bazı işlevler eklemek için Linux Kernel'i değiştiriyorum.Dışa aktarılan sembolleri isteğe bağlı olarak, yalnızca modifiye edilmiş bir Linux Kernel modülünde mevcutsa nasıl kullanılır?
Yük dengeleme sırasında bazı işlevlerle birlikte bir modül geliştirdim (net/netfilter/ipvs/ip_vs_utils.c
'u aradım). Buradaki tüm fonksiyonlar EXPORT_SYMBOL()
kullanılarak verilir.
Bu modül, mantıksal olarak her zaman yüklenmez. Amacım, kullanıcının bu ek işlevselliği kullanmak isteyip istemediğine karar vermesine izin vermektir (modülü yükleme veya boşaltma).
Sorum şu: Bu işlevler (modül çalışıyorsa veya çalışmıyorsa) OPSİYONEL modülleri (net/netfilter/ipvs/ip_vs_core.c
) (net/netfilter/ipvs/ip_vs_core.c
) içinden nasıl çağırabilirim. Böyle bir şey:
if(ip_vs_utils_IsLoaded)
{
function1(arg1, arg2, arg3); // being function1 defined on ip_vs_utils.c
}
sizin 'if (ip_vs_utils eğer Lai cevabı oldukça iyidir) 'kodun her zaman çekirdekte olması amaçlanmıştır; ancak bu kodun kendisi başka bir yüklenebilir modülde bulunuyorsa, muhtemelen basit modül bağımlılığı daha iyi bir yaklaşımdır. Tüm ayrıntılar için bkz. Depmod (8) – sarnold