Използване на launchd за зареждане и конфигуриране на разширение на ядрото в OS X

Пиша разширение на мрежовото ядро ​​за филтриране на сокет. За да го направи конфигурируем, потребителска програма чете конфигурационен файл и предава информацията на kext през PF_SYSTEM сокет.

Ако искам филтърът за сокет да работи възможно най-скоро при стартиране на системата, как бих хореографирал стартирането?

Сегашната ми идея е да използвам launchd, за да стартирам малка програма за инициализиране на потребителска област. Тази програма ще използва kextload за стартиране на kext. След това той ще прочете конфигурационния файл и ще говори с kext през гнездото PF_SYSTEM. След като свърши работата си, той бързо ще излезе.

Друг вариант би бил да имате два launchd елемента, един за kext (с помощта на kextload) и друг за четеца на конфигурационния файл на потребителската област. Това ще избегне вилицата, но иначе ще бъде идентично. Така или иначе, launchd ще трябва да стартира бърза програма за потребителска област без демон.

Въпреки това, launchd изглежда е насочен към стартиране на действителни демони, а не към бързи задачи, които си вършат работата и излизат. документ на библиотеката за програмисти казва:

Важно: Ако вашият демон се изключи твърде бързо след стартиране, launchd може да помисли, че се е сбил. Демоните, които продължават това поведение, може да бъдат спрени и да не се стартират отново, когато пристигнат бъдещи заявки. За да избегнете това поведение, не изключвайте поне 10 секунди след стартиране.

Това ми създава впечатлението, че launchd не е правилният начин да направите това. Как трябва да организирам стартирането? Дали цялата ми идея върви в грешна посока?

(Като странична бележка, искам да дам на потребителя възможността да променя опциите за филтриране и по време на изпълнение. Предполагам, че това може да стане просто чрез отваряне на нова PF_SYSTEM сокет връзка към kext, когато са необходими промени.)


person jjs    schedule 10.05.2011    source източник


Отговори (1)


Мисля, че това предупреждение се отнася само за демони, които се стартират при поискване.

person LaC    schedule 10.05.2011
comment
Благодаря ти. Ако това наистина е така, това е страхотна новина. Това сам ли си го разбрал или е документирано някъде? - person jjs; 10.05.2011