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
- pomocą rutynowych
thread_policy_get()
wrócić informacji o stanie Planowanie wątku w thread_policy_t
- To struktura wydaje się mieć
policy_rr_info_t
sub-podbudowę Ta struktura powinna mieć pole quantum
.
- 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.
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