"> SDGET(3)

SDGET(3)
XENIX System V (21 èþíÿ 1987)

ÈÌß
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
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.