ÈÌß
sdget, sdfree - ïpècoeäèíÿeò è oòcoeäèíÿeò paçäeëÿeìûé ceãìeíò äaííûx
ÑÈÍÒÀÊÑÈÑ
#include <sys/sd.h>
char *sdget (path, flags, size[, mode]) char *path; int flags, mode; long size;
int sdfree (addr) char *addr;
ÎÏÈÑÀÍÈÅ
Sdget ïpècoeäèíÿeò paçäeëÿeìûé ceãìeíò äaííûx ê ïpocòpaícòây äaííûx òeêyùeão ïpoöecca. Ceãìeíò çaäaeòcÿ èìeíeì path. Bûïoëíÿeìûe äeécòâèÿ oïpeäeëÿþòcÿ apãyìeíòoì flags, êoòopûé còpoèòcÿ ëoãè÷ecêèì cëoæeíèeì cëeäyþùèx ôëaãoâ:
SD_RDONLY Ïpècoeäèíèòü ceãìeíò òoëüêo äëÿ ÷òeíèÿ.
SD_WRITE Ïpècoeäèíèòü ceãìeíò äëÿ ÷òeíèÿ è çaïècè.
SD_CREAT Ecëè ceãìeíò cyùecòâyeò è íe ècïoëüçyeòcÿ (íeaêòèâeí), äeécòâèe ýêâèâaëeíòío coçäaíèþ ïycòoão ceãìeíòa. Èía÷e ceãìeíò coçäaeòcÿ â cooòâeòcòâèè c size è mode. Çía÷eíèe mode çaäaeò ïpaâa äpyãèx ïpoöeccoâ ïo ÷òeíèþ è çaïècè ýòoão ceãìeíòa. Äoïycòèìû ôyíêöèè, ïpèìeíÿeìûe ê oáû÷íûì ôaéëaì. Ïpaâo âûïoëíeíèÿ ceãìeíòa ëèøeío cìûcëa. Ïocëe coçäaíèÿ ceãìeíò èíèöèaëèçèpyeòcÿ íyëÿìè.
SD_UNLOCK Hecêoëüêo ïpoöeccoâ ìoãyò èìeòü äocòyï ê ceãìeíòy ìeæäy sdenter è sdleave.
Sdfree oòcoeäèíÿeò paçäeëÿeìûé ceãìeíò äaííûx oò òeêyùeão ïpoöecca. Ceãìeíò çaäaeòcÿ aäpecoì ïpècoeäèíeíèÿ addr. Ecëè òeêyùèé ïpoöecc cäeëaë paíee âûçoâ sdenter, ío íe cäeëaë sdleave, ïepeä oòcoeäèíeíèeì ceãìeíòa aâòoìaòè÷ecêè âûïoëíÿeòcÿ sdleave.
Koãäa íe ocòaeòcÿ áoëüøe ïpoöeccoâ, ïpècoeäèíèâøèx äaííûé ceãìeíò, coäepæèìoe ceãìeíòa ïepecòaeò cyùecòâoâaòü è íè oäèí ïpoöecc íe ìoæeò ïpècoeäèíèòü ceãìeíò áeç coçäaíèÿ eão ïocpeäcòâoì sdget c ôëaãoì SD_CREAT. B errno çaíocèòcÿ êoä oøèáêè EEXIST, ecëè ïpoöecc ïûòaeòcÿ coçäaòü paçäeëÿeìûé ceãìeíò äaííûx, êoòopûé yæe cyùecòâyeò è ècïoëüçyeòcÿ. B errno çaíocèòcÿ êoä oøèáêè ENOTNAM, ecëè ïpoöecc ïpèìeíÿeò sdget ê ôaéëy, êoòopûé cyùecòâyeò, ío íe èìeeò òèï paçäeëÿeìûx äaííûx.
ÇAÌE×AÍÈß
Ècïoëüçoâaíèe ôëaãa SD_UNLOCK èìeeò cìûcë â cècòeìe c cooòâeòcòâyþùeé aïïapaòíoé ïoääepæêoé.
B cëy÷ae 286 ïpoöeccopa sdget è äpyãèe oïepaöèè c paçäeëÿeìûìè ceãìeíòaìè äaííûx cëeäyeò ïpèìeíÿòü òoëüêo äëÿ áoëüøoé ìoäeëè ïaìÿòè. Ïpoãpoaììû c ìaëoé è cpeäíeé ìoäeëÿìè, ïûòaþùèecÿ ècïoëüçoâaòü paçäeëÿeìûe ceãìeíòû äaííûx, íaòaëêèâaþòcÿ ía íexâaòêy ïaìÿòè. Aïïapaòypa 286 ïpoöeccopa íe ïoçâoëÿeò â cëy÷ae ìaëoé ìoäeëè peaëèçoâaòü paçäeëÿeìûe ceãìeíòû äaííûx, ïpeäíaçía÷eííûe òoëüêo äëÿ ÷òeíèÿ. Oäíaêo, òaêèe ceãìeíòû peaëèçyþòcÿ â áoëüøoé ìoäeëè.
B cëy÷ae 386 ïpoöeccopa aäpecíoe ïpocòpaícòâo 32-áèòoâoe è paçäeëÿeìûe ceãìeíòû äaííûx ìoãyò ècïoëüçoâaòücÿ áeç oãpaíè÷eíèé, câoécòâeííûx 286 ïpoöeccopy.
sdget aâòoìaòè÷ecêè yâeëè÷èâaeò ãpaíèöy ceãìeíòa äaííûx, ycòaíaâëèâaÿ ee cpaçy ïocëe paçäeëÿeìoão ceãìeíòa äaííûx. Ýòo âoçäeécòâyeò ía ïocëeäyþùèe âûçoâû sbrk è brk, êoòopûe ïûòaþòcÿ âoccòaíoâèòü ïpeæíþþ ãpaíèöy. B ÷acòíocòè, ïoïûòêa âoccòaíoâèòü ãpaíèöy, êoòopaÿ áûëa äo âûçoâa sdget, ïpèâoäèò ê oøèáêe.
Ýòè cpeäcòâa cïeöèôè÷íû äëÿ XENIX è ìoãyò oòcyòcòâoâaòü â äpyãèx peaëèçaöèÿx UNIX. Ïpoãpaììû, ècïoëüçyþùèe ýòè ôyíêöèè, äoëæíû êoìïoíoâaòücÿ c ôëaãoì -lx.
Boçâpaùaeìoe çía÷eíèe