Как узнать (из ring0) номер ядра, на котором выполняется текущий код в многопроцессорных системах (интересует процессор core 2 duo)? Я чего-то в доках интела этого не могу найти.
Об этом весьма подробно говорится в главе 7. (7.5.5, 7.10.2) Получить номер ядра можно из initial APIC ID (CPUID.1:ECX[32:24]). Поля в initial APIC идут следующим образом: 'CLUSTER_ID PACKAGE_ID CORE_ID SMT_ID' (справа-налево). Ширина полей меняется в зависимости от того, представлена ли соответсвтующая технология, или нет. В мануалах есть пример идентифкации логических процессоров (как для HT так и для MultiCore).