2017-01-21 58 views

Odpowiedz

0

Interfejsy API związane z tym tematem są dość bizantyjskie i słabo udokumentowane, ale oto, co znalazłem.

pierwsze, typy danych związane z RR harmonogramu wydają się być w /usr/include/mach/policy.h, wokół linii 155. Jest to struct:

struct policy_rr_info { 
    ... 
    integer_t quantum; 
    .... 
}; 

quantum jest myślę The kwant czasu (nie wiem jednostek.) Następnie grepping wokół tego lub pokrewnych typów zdefiniowanych w tym samym miejscu, znalazłem plik /usr/include/mach/mach_types.def, który mówi, że typ struct thread_policy_t zawiera pole policy_rr_info_t na linii 203.

Następny znalazłem w /usr/include/mach/thread_act.h funkcja publiczna thread_policy_get, która może pobrać informacje o zasadach wątku do struct thread_policy_t *.

Tak, działa wstecz. myślę (ale nie próbowali w ogóle), które można

  1. pomocą rutynowych thread_policy_get() wrócić informacji o stanie Planowanie wątku w thread_policy_t
  2. To struktura wydaje się mieć policy_rr_info_t sub-podbudowę Ta struktura powinna mieć pole quantum.
  3. To pole pojawia się jako timeslice, ale nie wiem o jednostkach.

Nie ma stron podręcznika dla tej części interfejsu API, ale strona this Apple Developer wyjaśnia przynajmniej trochę, jak korzystać z tego interfejsu API.

Zauważ, że to wszystko zostało zebrane z po prostu przeglądania różnych nagłówków jądra i zdecydowanie nie próbowałem używać żadnego z tych API w żadnym rzeczywistym kodzie.

+0

Przyjemny spelunking @bnaecker, ale komentarz na początku ['policy.h'] (https://opensource.apple.com/source/xnu/xnu-201/osfmk/mach/policy.h), że mówi "* Definicje dotyczące harmonogramowania polityki. N.B. Zdefiniowane tutaj interfejsy są przestarzałe! * "Sprawia, że ​​wątpię, aby to działało. Również "kwant" jest zdefiniowany tylko dla polityki Round Robin, FIFO i polityki timesharingowej nie mają nic istotnego. Obawiam się, że kopiemy tu w złym miejscu. – Palimondo