sdenter, sdleave - cèíxpoíèçèpyeò äocòyï ê paçäeëÿeìûì ceãìeíòaì äaííûx
#include <sys/sd.h>
int sdenter (addr, flags) char *addr; int flags;
int sdleave (addr) char *addr;
Sdenter ècïoëüçyeòcÿ ïpè ïoïûòêe òeêyùeão ïpoöecca ïoëy÷èòü äocòyï ê coäepæèìoìy paçäeëÿeìoão ceãìeíòa äaííûx. Apãyìeíò addr paâeí çía÷eíèþ, âoçâpaùeííoìy ïpeäûäyùèì âûçoâoì . Bûïoëíÿeìoe äeécòâèe oïpeäeëÿeòcÿ apãyìeíòoì flags, êoòopûé còpoèòcÿ ëoãè÷ecêoé cëoæeíèeì cëeäyþùèx ôëaãoâ:
SD_NOWAIT Ecëè äpyãoé ïpoöecc yæe cäeëaë âûçoâ sdenter ïo oòíoøeíèþ ê ýòoìy ceãìeíòy äaííûx, ío íe cäeëaë cooòâeòcòâyþùèé sdleave c ôëaãoì SD_UNLOCK, ïpoöecc íe æäeò ocâoáoæäeíèÿ ceãìeíòa è ôèêcèpyeòcÿ oøèáêa ENAVAIL.
SD_WRITE Óêaçûâaeò, ÷òo ïpoöecc coáèpaeòcÿ äeëaòü çaïècü â paçäeëÿeìûé ceãìeíò äaííûx. Ïpoöecc, ïpècoeäèíèâøèé paçäeëÿeìûé ceãìeíò äaííûx c ycòaíoâëeííûì ôëaãoì SD_RDONLY, íe ìoæeò âûïoëíÿòü sdenter c ôëaãoì SD_WRITE.
Sdleave ècïoëüçyeòcÿ äëÿ yêaçaíèÿ òoão, ÷òo òeêyùèé ïpoöecc çaêoí÷èë ìoäèôèêaöèþ coäepæèìoão paçäeëÿeìoão ceãìeíòa äaííûx.
Moäèôèêaöèè paçäeëÿeìoão ceãìeíòa äaííûx, cäeëaííûe ìeæäy âûçoâaìè sdenter è sdleave, âûïoëíÿþòcÿ êoppeêòío è ìoãyò áûòü y÷òeíû äpyãèìè ïpoöeccaìè. He peêoìeíäyeòcÿ íaäoëão ocòaâëÿòü ceãìeíò ïoä äeécòâèeì âûçoâa sdenter: êaê òoëüêo çaâepøeía òeêyùaÿ paáoòa c ceãìeíòoì, âûçûâaòü sdleave. B ÷acòíocòè, íe peêoìeíäyeòcÿ ìeæäy sdenter è sdleave âûïoëíÿòü cècòeìíûe âûçoâû.
Ecëè ceãìeíò áûë coçäaí áeç ôëaãa SD_UNLOCK, ìeæäy sdenter è sdleave çaïpeùeí cècòeìíûé âûçoâ fork.
B cëy÷ae ycïeøíoão çaâepøeíèÿ âoçâpaùaeòcÿ çía÷eíèe 0. Èí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 âûçâaë sdenter c ôëaãoì SD_WRITE, a ceãìeíò yæe ïpècoeäèíeí äpyãèì ïpoöeccoì c ôëaãoì SD_RDONLY. Oøèáêa ENAVAIL oçía÷aeò, ÷òo â sdenter yêaçaí ôëaã SD_NOWAIT, a paçäeëÿeìûé ceãìeíò íe câ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.