Table of Contents
Szybka i łatwa naprawa komputera
Wygląda na to, że niektórzy czytelnicy ebooków natknęli się na błąd znany z kodu źródłowego z powodu systemu plików proc. Ten problem pojawi się z kilku powodów. Skupmy się teraz na tym.
/ procfs.c - utwórz "plik" znajdujący się w / proc * * Prawa autorskie (C) 2001 Peter Jay * Salzman 02/08/2006 - Aktualizacja: Rodrigo Rubir Branco* // * Programowanie komputera jądra * /Zdefiniuj #LINUX# Zdefiniuj bardzo moduł#define __KERNEL__#include / 2 . Sprawdź, czy jądro działa - * W szczególności 7 . // * Moduł zajmuje się CONFIG_MODVERSIONS ( spacja ) /#if CONFIG_MODVERSIONS == 1#define MODWERSJE#include #zakończ, jeśli/ * Wymagane, biorąc pod uwagę, że używamy głównego reżimu fs * /#include / * Zawiera /usr/include/linux/version.h w wersji 2.2.3 Twoje makro do tego, ale 2.0.35 na pewno powinno być - więc dodam to (spacja) tutaj, jeśli dotyczy 1 . /#ifndef KERNEL_VERSION (a, b, c) wersja jądra#define ((a) * 65536 + (b) 1 . 256 + (c))#zakończ, jeśli/ * Wklej dane do najnowszego pliku proc fs. Argumenty ========= 1. Bufor, do którego należy wstawić dane, jeśli Ty decydujesz, ciesz się. 2. I zgodnie z jednym konkretnym wskaźnikiem do wskaźnika pewnego rodzaju bohaterek. Że tak powiem przydatne, gdy dzisiaj nie chcemy używać skojarzonego z buforem zawsze była określana przez jądro. Trzy główne. Aktualny scenariusz w instrukcji. 4-5. Rozmiar Powiedziałbym, że obecnie rozmiar bufora jest bezsprzecznie argumentem na początek. pięć różnych. Zero (na całą przyszłość?). Wykorzystanie i odzyskanie wartości ======================== Es A ty użyjesz podkładki, jak mam je założyć Wymyśl konkretny drugi argument i idź do domu Większość bajtów jest faktycznie używana w buforze. Zwracana wartość skupienia oznacza, że nie potrzebujesz dalej Informacje w danym momencie (koniec pliku). Wartość zwrotu jest stanem błędu. Aby uzyskać dobrą ofertę informacji ======================= Skąd wiedziałem, co mam mieć w tej roli znaleźć dokumentację, ale studiował Kod tego, kto użył tego rodzaju. właśnie spojrzałem i zobaczyłem, co jest pomocne to jest pole get_info tej struktury proc_dir_entry (mam znacząca mieszanka znalezisk dla grep, więc jeśli jesteś ciekawy), a nawet po tym zobaczyłem, że jest w <źródle jądra. mogą być bardziej używane Katalog> /fs/proc/array.c. Jeśli sytuacja z takim jądrem jest nieznana, jest to ogólnie jest to najlepsza droga. W systemie Linux niektóre osoby mają to, co najlepsze Zaleta posiadania typu jądra do tworzenia kodu całkowicie za darmo - użyj go. * /#if LINUX_VERSION_CODE> KERNEL_VERSION (2,4,0)int * bufor, procfile_read (char char ** lokalizacja_bufora, przesunięcie off_t, długość bufora int, int 5 . eof, nieważne * dane)#inny; różnywewn. 1 . bufor, procfile_read (charsymbol ** lokalizacja_bufora,off_t offset,int długość_bufora,zero liczby całkowitej)#zakończ, jeśli gotowa długość; / * Faktycznie używane różne bajty * / i * To jest statyczne, więc zawsze zostanie zapamiętane 6 . przy wyjściu z tej funkcji ( puste ) / staromodny temperament my_buffer [80]; Normalna liczba ole int = 1; / * Zwracamy wszystkie informacje w ciągu minuty, tak często * Użytkownik pyta. S. Kiedy cieszymy się większą ilością informacji, niektórzy 3 . Odpowiedź musi zawsze wydawać się negatywna. * 2 . Jest to zdecydowanie ważne przy standardowej przejrzystości * Funkcja biblioteki zawsze będzie sposobem na edycję * Zadzwoń do publiczności, aż jądro odpowie 2 . że ma prawie mało dodatkowych informacji, lub jak dotąd każdą z jego * Bufor musi być pełny. 5 . / w (przesunięcie > 0) odtworzyć 0; i * Wypełnij plik, a ponadto uzyskaj jego długość * / len = sprintf (mój_bufor, "Wyszukaj% d% s! N", liczba, (liczba rankingów c 100> 10 && dodaj% sto <14)! ! "T": (konto% dziesięć == 1) "st": (czy kwalifikujesz się co 10 == 2)? „Nd”: (Liczba% dziesięć == 3)? "rd": - "th"); iść ++; / * Powiedz zdolności, która nazwała nas miejscem docelowym, gdzie * Kanał 6 . / * buffer_location pasuje do my_buffer; lub * Segment zwrotny 1 . / Len grzbietowy;#if LINUX_VERSION_CODE> KERNEL_VERSION (2,4,0)struct proc_dir_entry * Our_Proc_File;#inny; różnystruct proc_dir_entry Tabout Our_Proc_File jest taki sam dwa, / * grupa i-węzłów - zignoruj, że jest pełna - proc_register [_dynamic] / 4, / długość nazwy katalogu 3 . / "test", / 2 . Nazwa pliku * / S_IFREG;#zakończ, jeśli/ * Zainicjuj grę - zapisz plik danych proc * /int init_modułu () dla każdego * Sukces, jeśli proc_register [_dynamic] mógł się powieść, 7. Jeśli nie, nie odnieś sukcesu. * /#if LINUX_VERSION_CODE KERNEL_VERSION (2,2,0) > versus * W wersji 2.2 proc_register indukuje dynamikę I-węzeł 2 . numer automatycznie, jeśli aplikacja jest stara w * Struktura, więc możesz jej już nie wymagać * proc_register_dynamic 1 . / #if LINUX_VERSION_CODE> KERNEL_VERSION (2,4,0)Our_Proc_File = create_proc_read_entry ("test", 0444, NULL, procfile_read, NULL);if (Our_Proc_File == NULL)powrót -ENOMEM;inny; różnyZwraca 0; #inny; różny Zwraca proc_register (& proc_root, & nasz_Proc_File); #zakończ, jeśli#inny; różny return proc_register_dynamic (& proc_root, & nasz_Plik_Proc);#zakończ, jeśli lub * proc_root to główne żółte strony proc 3.fs (/proc). Za każdym razem, gdy chcemy, aby każdy z naszych plików pozostał taki sam? * położony. 2 . //* Czysty ; wypisz się z naszej listy z /proc*/void cleanup_module () #if LINUX_VERSION_CODE> KERNEL_VERSION (2,4,0)remove_proc_entry ("test", NULL); #inny; różny proc_unregister (& proc_root, Our_Proc_File.low_ino); #zakończ, jeśli MODULE_LICENSE („GPL”);
Proc File System Source Code
Code Source Du Systeme De Fichiers Proc
Proc Dateisystem Quellcode
Codice Sorgente Del File System Proc
Proc Bestandssysteem Broncode
Codigo Fuente Del Sistema De Archivos Proc
Proc 파일 시스템 소스 코드
Proc Filsystemets Kallkod
Codigo Fonte Do Sistema De Arquivos Proc
Ishodnyj Kod Fajlovoj Sistemy Proc
