">
ÈÌß
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â:
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
B cëy÷ae ycïeøíoão çaâepøeíèÿ âoçâpaùaeòcÿ aäpec
ïpècoeäèíeííoão ceãìeíòa. Èía÷e âoçâpaùaeòcÿ çía÷eíèe -1 è â
errno çaíocèòcÿ êoä oøèáêè. Oøèáêa EINVAL oçía÷aeò, ÷òo
ïpoöecc ïûòaeòcÿ ïpècoeäèíèòü yæe ïpècoeäèíeííûé ceãìeíò.
Oøèáêa EEXIST oçía÷aeò, ÷òo ïpoöecc ïûòaeòcÿ coçäaòü
ceãìeíò, êoòopûé yæe cyùecòâyeò è ècïoëüçyeòcÿ. Oøèáêa
ENOTNAM oçía÷aeò, ÷òo ïpoöecc ïpèìeíÿeò sdget ê ôaéëy,
êoòopûé cyùecòâyeò, ío íe èìeeò òèï paçäeëÿeìûx äaííûx.
Apãyìeíò mode äoëæeí ïpècyòcòâoâaòü â ïepâoì âûçoâe sdget.
ÑÌ. ÒÀÊÆÅ
sdenter(3), sdgetv(3), sbrk(2)
ÇAÌE×AÍÈß
Tèï apãyìeíòa size áûë unsigned â âepcèè 3.0 XENIX è còaë
long â XENIX System V. Xoòÿ ècïoëüçoâaíèe long size òpeáyeò
ìoäèôèêaöèè ècxoäíoão òeêcòa ïpè êoìïèëÿöèè c áèáèëèoòeêaìè
System V, òèï unsigned áyäeò êoppeêòío èíòepïpeòèpoâaòücÿ
ÿäpoì cècòeìû â ïpoãpaììax, cêoìïèëèpoâaííûx c áèáëèoòeêaìè
âepcèè 3.0.