Paznokcie
Pilot odmawia, bo niebezpiecznie. Samochodem? To przecież tysiąc osiemset kilometrów i pora deszczowa. Kiedy piloci po kilku dniach zdecydowali się wreszcie, zrobili to beze mnie, w tym momencie siedziałem już na pokładzie samolotu lecącego w przeciwnym kierunku. Mój samolot doleciał do celu szczęśliwie, samolot pilota, na który kupiłem kiedyś bilet, rozbił się przy lądowaniu. Zginęło kilka osób. Kawałek wyplutej przez Nyiragongo wulkanicznej lawy leżący na płycie startowej lotniska był przyczyną katastrofy.
- No widzisz? a nie chcesz uwierzyć w przeznaczenie.
W 1979 Kongo było największym światowym eksporterem koboltu, czwartym eksporterem diamentów, i znajdowało się pomiędzy dziesięcioma największymi producentami uranu, miedzi, manganu i cyny.
Osoby które działają bardziej spontanicznie i pod wpływem nagłego impulsu decydują się na wyjazd w często ostatnim momencie i szukają
paznokcie wtedy ofert typu last minute. Tu dostępna oferta jest już dużo skromniejsza i często pozostają obiekty które nie cieszą się tak dużą popularnością lub są po prostu drogie. Wtedy jednak już trzeba decydować się na to co jest dostępne, często nawet z wylotem z innego miasta lub w gorszym standardzie niż się chciało. Jest to pewna forma hazardu i zdarza się, że pozostały dwa ostatnie miejsca na wylot, które biuro podróży sprzedaje po mocno zaniżonej cenie.
Funkcja mapuje obszar pamięci fizycznej urządzenia do obszaru pamięci wirtualnej procesu sterownika#include
#include #include #include #include #include void *mapuj_pamiec(off_t adres_fizyczny, size_t dlugosc_mapy){int dp; /* deskryptor pliku */void *mem_wsk; /* wskaznik na zmapowany obszarpamieci urzadzenia(wirtualny adres w przestrzeni adresowej procesu)*//* Tylko root może otrzymać dostęp do /dev/mem */if (geteuid() != 0) {printf("Brak uprawnień do otwarcia /dev/mem!(uruchom z uprawnieniami roota)\n");return((void *)-1);}/* Weryfikacja adresu fizycznego początku mapowanegoobszaru pamięci */if ((adres_fizyczny % PAGE_SIZE) != 0) {printf("Adres fizyczny nie jest wielokrotnościąPAGE_SIZE)!\n");return((void *)-2);}/* Weryfikacja zakresu mapowanego obszaru pamieci */if ((dlugosc_mapy % PAGE_SIZE) != 0) {printf("Długość mapowanego obszaru pamięci musibyć wielokrotnością PAGE_SIZE!\n");return((void *)-3);}/* Otwarcie pliku odwzorowujacego pamiec systemu (/dev/mem) w trybie rw */dp = open("/dev/mem", O_RDWR | O_SYNC) < 0)if(dp < 0){printf("Otwarcie /dev/mem nie powiodło się, kodbłędu: %d!\n", dp);return((void *)-4);}/* Mapowanie pamieci urzadzenia do przestrzeniadresowej procesu */mem_wsk = mmap(NULL, dlugosc_mapy, (PROT_READ |PROT_WRITE), MAP_SHARED, dp, adres_fizyczny);if ((mem_wsk == MAP_FAILED) || (mem_wsk == NULL)) {printf("Mapowanie pamięci urządzenia niepowiodło się\n");close(dp);return((void *)-5);}/* Zamkniecie pliku odwzorowującego pamięć systemu(/dev/mem) */if (close(dp) != 0) {printf("Zamkniecie /dev/mem nie powiodło się!\n");}return(mem_wsk);}/* przykłady dostępu do rejestrów urządzenia,// zdefiniować jeden z poniższych trybów dostępu// (uwaga, specyficzne dla kompilatora)://#define ACCESS_MODE (unsigned int)/* 32-bitowy *///#define ACCESS_MODE (unsigned short int)/* 16-bitowy *///#define ACCESS_MODE (unsigned char)/* 8-bitowy */// Zapis wartości do rejestru:*((volatile ACCESS_MODE*)(adres_rejestru)) = wartosc;// Odczyt wartości rejestru:wartosc = (ACCESS_MODE)*((volatile ACCESS_MODE*)(adres_rejestru));*/60ProgramowanieMechanizmy czasu rzeczywistego okiem programisty sterownikówlistopad 2008nia i dowiadywać się o stanie urządzeniaco 10 milisekund odczytując jego rejestrstatusowy. imperium rosyjskie Lekarka efektowna laicko oznacza blaszane wierszyki.