Ipari zen

Szak-irodalom. A fejlesztő jajszava haikuban. A technika ördöge avagy a lelketlen vasban a mélyen emberi.

A szoftverfejlesztés művészete és a zen

2010.12.26. 22:36 Ipari zen

Az ezerarcú procfile definíció

Címkék: read write linux kernel procfile

A rövidítés
kényelmes ugyan, csakhogy
máshová vezet.

Gyerekkoromban járta az a vicc, miszerint
- Mi a különbség a hullámvasút és a női mell között?
- Semmi! Mindkettő a gyerekeknek készült, de a felnőttek élvezik.
Nos, hasonlóan sikeres és de félreértelmezett találmánya volt a világnak a linuxos procfile rendszer. Eredetileg afféle üvegzseb projektnek készült, hogy a kernel modulok állapotáról valami közelebbi információt tudhasson meg a kernel kényének-kedvének amúgy is kiszolgáltatott felhasználó. De aztán a ferdehajlamú kernelmodulfejlesztők rátették a kezüket procfile-okra és szép lassan a linuxon a user mode és a kernel mode közötti adatcsere egyik legfőbb csatornája lett. Ezen keresztül lehet bonyolultabb konfigurációs parancsokkal ellátni egy modult, de akár arra is alkalmas, hogy nagyobb mennyiségű adatot kiolvassunk a modulból. A procfile önmagában egy virtuális file, amibe a külső felhasználó bele tud írni tud, vagy olvasni tud belőle. Az íráshoz/olvasáshoz szükséges buffereket és függvényeket a kernel modulnak kell implementálnia. Nos mi egy hálókártyáról érkező forgalmat szűrtünk meg és dolgoztunk fel, amit aztán egy user mode applikáció egy procfile-on keresztül kiolvasott a kernel modulból. A rendszer kiválóan működött egy darabig aztán minden egyéb hibajelzés nélkül leállt a kiolvasás. Jó néhány nap próbálgatás után kiderült, hogy körülbelül 2Gbyte adat kiolvasása után. Gusztustalan furmányok segítségével (időnként lezártuk és újranyitottuk a procfile-t) sikerült áthidalni a problémát, mígnem nemrég rájöttünk a probléma gyökerére. 
Procfile-t normális módon úgy lehet létrehozni, hogy a user definiál egy leírót amiben benne van minden egyes file művelethez egy függvény pointer, amihez aztán meghívódik a megfelelő műveletkor. Ezt a leírót kell aztán megadni a tulajdonképpeni procfile létrehozásakor. Így ni

 

 

Kesőbb láttam, hogy a gcc-t a -D_FILE_OFFSET_BITS=64 definícióval kényszeríteni lehet arra, hogy alapból 64 bites offszeteket használjon.

1 komment

A bejegyzés trackback címe:

https://ipari-zen.blog.hu/api/trackback/id/tr352540811

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Sopánka76 2012.07.30. 18:00:54

ahhh ezt csak most látom
pont az izgalmas résznél kicsit megszakadt a film :(