Pytania otagowane jako linux-kernel

Ten tag jest przeznaczony na pytania dotyczące wewnętrznych elementów samego jądra Linuksa - w szczególności dotyczące pisania kodu działającego w kontekście jądra (np. Modułów jądra lub sterowników). Pytania dotyczące pisania kodu przestrzeni użytkownika w systemie Linux powinny być generalnie oznaczane jako [linux]. Ponieważ elementy wewnętrzne jądra Linuksa stale się zmieniają, pomocne jest uwzględnienie dokładnych wersji jądra, którymi jesteś zainteresowany.


3
Kontekst zmienia się znacznie wolniej w nowych jądrach Linuksa
Chcemy zaktualizować system operacyjny na naszych serwerach z Ubuntu 10.04 LTS do Ubuntu 12.04 LTS. Niestety, wydaje się, że opóźnienie uruchomienia wątku, który stał się gotowy do uruchomienia, znacznie wzrosło z jądra 2.6 do jądra 3.2. W rzeczywistości trudno uwierzyć w liczby latencji, które otrzymujemy. Powiem bardziej szczegółowo o teście. …

2
Odczyt / zapis plików w module jądra Linuksa
Znam wszystkie dyskusje o tym, dlaczego nie powinno się czytać / zapisywać plików z jądra, zamiast tego jak używać / proc lub netlink do tego. Mimo wszystko chcę czytać / pisać. Przeczytałem także Driving Me Nuts - Things You Never Powinieneś robić w jądrze . Jednak problem polega na tym, …

3
Jeśli wątki mają ten sam PID, jak można je zidentyfikować?
Mam zapytanie związane z realizacją wątków w Linuksie. Linux nie ma wyraźnej obsługi wątków. W przestrzeni użytkownika możemy użyć biblioteki wątków (takiej jak NPTL) do tworzenia wątków. Teraz, jeśli używamy NPTL, obsługuje mapowanie 1: 1. Jądro użyje tej clone()funkcji do zaimplementowania wątków. Załóżmy, że utworzyłem 4 wątki. Wtedy oznaczałoby to, …

2
Co to jest? = W Makefile
KDIR ?= $(shell uname -r) Jakie jest znaczenie ?=? Mam rozumieć różnicę między :=, +=a =od innego wątku dostępnych w przepełnienie stosu, ale nie może znaleźć wytłumaczenie ?=.

6
Jak uniknąć ostrzeżenia transparent_hugepage / defrag z mongodb?
Otrzymuję następujące ostrzeżenie od mongodb o THP 2015-03-06T21:01:15.526-0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. 2015-03-06T21:01:15.526-0800 I CONTROL [initandlisten] ** We suggest setting it to 'never' Ale udało mi się ręcznie wyłączyć THP frederick@UbuntuVirtual:~$ cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] frederick@UbuntuVirtual:~$ cat /sys/kernel/mm/transparent_hugepage/defrag always madvise [never] Zrobiłem podstęp dodając transparent_hugepage=neverdo …

2
Co to jest VDSO i VSYSCALL?
Zrobiłem sudo cat /proc/1/maps -vv Próbuję zrozumieć dane wyjściowe.Widzę, jak wiele bibliotek współdzielonych jest mapowanych na segment mapowania pamięci zgodnie z oczekiwaniami. 7f3c00137000-7f3c00179000 r-xp 00000000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00179000-7f3c00379000 ---p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c00379000-7f3c0037a000 r--p 00042000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037a000-7f3c0037b000 rw-p 00043000 08:01 21233923 /lib/x86_64-linux-gnu/libdbus-1.so.3.5.8 7f3c0037b000-7f3c00383000 r-xp 00000000 08:01 …
89 c  linux  linux-kernel  kernel  vdso 

3
Użycie gdb do jednoetapowego kodu asemblera poza określonym plikiem wykonywalnym powoduje błąd „nie można znaleźć granic bieżącej funkcji”
Jestem poza docelowym plikiem wykonywalnym gdb i nie mam nawet stosu, który odpowiadałby temu celowi. I tak chcę zrobić jednoetapowo, aby móc zweryfikować, co się dzieje w moim kodzie asemblera, ponieważ nie jestem ekspertem w montażu x86. Niestety, gdb odmawia wykonania tego prostego debugowania na poziomie zestawu. Pozwala mi ustawić …

1
Obraz vs zImage vs uImage
Jaka jest różnica między nimi? Wiem, że u-boot potrzebuje jądra w formacie uImage. System, którego używam, najpierw uruchamia się z programu ładującego etapu 1, a następnie wywołuje u-boot. Chcę odrzucić u-boot i uruchomić bezpośrednio z programu ładującego etapu 1. Jakiego typu obrazu jądra muszę używać?

7
Zrozumienie makra container_of w jądrze Linuksa
Kiedy przeglądałem jądro Linuksa, znalazłem container_ofmakro, które jest zdefiniowane w następujący sposób: #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) Rozumiem, co robi container_of, ale nie rozumiem ostatniego zdania, czyli (type *)( (char *)__mptr - offsetof(type,member) …

2
Użycie liczb zmiennoprzecinkowych w jądrze Linuksa
Czytam „Linux Kernel Development” Roberta Love'a i natknąłem się na następujący fragment: Brak (łatwego) użycia zmiennoprzecinkowego punktu Kiedy proces przestrzeni użytkownika używa instrukcji zmiennoprzecinkowych, jądro zarządza przejściem z trybu liczb całkowitych do trybu zmiennoprzecinkowego. To, co jądro musi zrobić podczas używania instrukcji zmiennoprzecinkowych, różni się w zależności od architektury, ale …

5
Wybieranie harmonogramu we / wy systemu Linux
Czytałem, że podobno możliwa jest zmiana harmonogramu I / O dla konkretnego urządzenia w działającym jądrze, zapisując do / sys / block / [dysk] / queue / schedule. Na przykład widzę w moim systemie: anon@anon:~$ cat /sys/block/sda/queue/scheduler noop anticipatory deadline [cfq] że domyślnym jest całkowicie sprawiedliwy harmonogram kolejkowania. Zastanawiam się, …



4
Czego potrzeba pustych nawiasów klamrowych „{}” na końcu tablicy struktur?
Uderzyłem trochę kodu c w jądrze Linuksa: static struct ctl_table ip_ct_sysctl_table[] = { { .procname = "ip_conntrack_max", .maxlen = sizeof(int), .mode = 0644, .proc_handler = proc_dointvec, }, // ... { .procname = "ip_conntrack_log_invalid", .maxlen = sizeof(unsigned int), .mode = 0644, .proc_handler = proc_dointvec_minmax, .extra1 = &log_invalid_proto_min, .extra2 = &log_invalid_proto_max, }, …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.