linux-kernel

Uzasadnienie kontenera makra w Linuksie / list.h

W implementacji list jądra Linuksa w /include/linux/list.h, Jakie jest uzasadnienie pierwszego wiersza (wklejonego poniżej) m ... (type *)( (char *)__mptr - offsetof(type,member) );}) #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)

Co właściwie robi request mem region () i kiedy jest potrzebny?

Uczę się pisania wbudowanego sterownika Linuksa i postanowiłem odpalić kilka GPIOs, aby upewnić się, że rozumiem książkę (ld ... kować się z adresem sprzętowym tylko ioremap()? Więc kiedy musimy użyć request_mem_region()? Dzięki za wszelkie odpowiedzi!

Jaka jest różnica między DMA a pamięciowym IO?

Jaka jest różnica między DMA a pamięciowym IO? Obie wyglądają podobnie do mnie.

Jak NOHZ = On wpływa na czasomierz do w jądrze Linuksa

W prostym eksperymencie ustawiłem NOHZ=OFF i użyłem printk, Aby wydrukować, jak często wywoływana jest funkcja do_timer. Dzwo ... ziałać znacznie lepiej, gdy NOHZ=OFF. Mówiąc krótko, jak NOHZ=ON wpływa do_timer? Dlaczego do_timer nie dotrzymuje terminów?

Jak odczytać bufor pierścienia w przestrzeni jądra Linuksa?

Piszę sterownik znaków dla Linuksa, który może drukować logi systemowe w przestrzeni użytkownika. Tak jak robi to komenda "dm ... mogę odczytać bufor pierścienia wewnątrz przestrzeni jądra? (Próbowałem odczytać kod źródłowy dmesg.c. ale to nie pomogło.)

Wysyłanie pakietów UDP z jądra Linuksa

Nawet jeśli podobny temat już istnieje, zauważyłem, że pochodzi z dwóch lat, więc myślę, że lepiej jest otworzyć nowy... Pró ... = len; msg.msg_iovlen = len; old_fs = get_fs(); set_fs(KERNEL_DS); error = sock_sendmsg(sock,&msg,len); set_fs(old_fs);

W jakim kontekście znajdują się softirq i tasklet?

Wiem, że istnieją kontekst procesu i kontekst przerwania, ale nie rozumiem podczas wykonywania softirq lub tasklet, pod który ... oftirq i tasklet to dlaczego podczas wykonywania nie wolno spać?? Czy ktoś może mi pomóc zidentyfikować te pytania, dzięki!!

Zrozumieć ślad pamięci U-Boot

Nie rozumiem co się dzieje w pamięci RAM podczas ładowania U-Boot. Pracuję nad zestawem ewaluacyjnym Xilinx Zynq ZC702 i prób ... jest prawdziwy ślad pamięci U-Boota ? A ogólniej, gdzie mogę umieścić moje jądro, aby mieć pewność, że nie nadpisze czegoś ?

Jak uzyskiwany jest czas mikrosekund Linuksa gettimeofday () i jaka jest jego dokładność?

Zegar Ścienny czas jest zwykle dostarczany przez systemy RTC. Zwykle zapewnia to tylko czasy do zakresu milisekund i zwykle m ... ziarnistością, ale czas, który dostarcza, prawie nigdy nie jest fazą do one microsecond z jakimkolwiek innym źródłem czasu.

Jak utworzyć plik defconfig z.config?

Zrobiłem make menuconfig dla planszy defconfig i zmodyfikowałem kilka konfiguracji. Po wybraniu opcji Zapisz, w górnym katalo ... ę skopiować .config jako nowy defconfig i skopiować do arch/arm/configs/? $ cp .config arch/arm/configs/board_new_defconfig

Dlaczego Linux na x86 używa różnych segmentów dla procesów użytkownika i jądra?

Tak więc, Wiem, że Linux używa czterech domyślnych segmentów dla procesora x86( kod jądra, dane jądra, kod użytkownika, Dane ... ch? Ochrona pamięci odbywa się poprzez stronicowanie, a segmenty użytkownika i jądra mapują do tych samych adresów liniowych.

Dlaczego wyłączenie przerwań wyłącza preemption kernela i jak spin lock wyłącza preemption

Czytam ostatnio rozwój jądra Linuksa i mam kilka pytań związanych z wyłączaniem preemption. W sekcji "Kontrola przerwań" w ... IRQL", co całkowicie uniemożliwia planowanie wątków. Czy preempt_disable() wyłącza preemption przez wyłączenie przerwań?

Co to jest interfejs dla wywołań systemowych ARM i gdzie jest on zdefiniowany w jądrze Linuksa?

Czytałem o wywołaniach systemowych w Linuksie i wszędzie jest podany opis dotyczący architektury x86 (0x80 i SYSENTER). Ale n ... stotnych plików, które poznałem to: Arch/arm/kernel / calls.S Arch/arm/kernel / entry-common.S (potrzebne Wyjaśnienie)

Zmiana kolejności instrukcji odczytu/zapisu w GCC

Prymitywy synchronizacji Linuksa (spinlock, mutex, RCUs) używają instrukcji barrier memory, aby wymusić ponowne uporządkowani ... d architektury pamięci podręcznej. Bardzo przydatny byłby przykładowy kod C i zmodyfikowany kod generowany przez GCC. Dzięki!

Jak Linux określa następny PID?

Jak Linux określa następny PID, którego będzie używał dla procesu? Celem tego pytania jest lepsze zrozumienie jądra Linuksa. ... zednich PID nadal działa, jak również najnowszy PID, który został wydrukowany. Jak apache wybiera ponowne użycie tych PID?

Czy istnieje Definicja makra do sprawdzenia wersji jądra Linuksa?

Zastanawiam się, czy istnieje makro gcc, które powie mi wersję jądra Linuksa, abym mógł odpowiednio ustawić typy zmiennych. Jeśli nie, to jak miałbym definiować własne makro, które to robi?

Linux SCHED inne, SCHED FIFO i SCHED RR-różnice

Czy ktoś może wyjaśnić różnice między SCHED_OTHER, SCHED_FIFO i SCHED_RR? Thanks

która wersja C jest używana w jądrze Linuksa?

Czy jądro Linuksa używa tylko starej składni C90, czy zostało zoptymalizowane z funkcjami C99 / C11 ? Zastanawiałem się, czy najnowsze wersje C są używane, jeśli to możliwe.

Dlaczego alokacja pamięci dla procesów jest powolna i może być szybsza?

Stosunkowo dobrze wiem, jak działa pamięć wirtualna. Cała pamięć procesu jest podzielona na strony i każda strona pamięci wir ... oże po prostu wyczyścić go w pamięci podręcznej i przenieść do pamięci dopiero po pewnym przetworzeniu w pamięci podręcznej.