Server for Information Technologies Ñåðâåð ïîääåðæèâàåòñÿ
Öåíòðîì Èíôîðìàöèîííûõ Òåõíîëîãèé
(095) 932-9212, 932-9213, 939-0783
E-mail: info@citforum.ru
Ñåðâåð ñîäåðæèò ìîðå(!) àíàëèòè÷åñêîé èíôîðìàöèè CIT Forum CD-ROM

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

ÈÌß
brkctl - paçìeùaeò äaííûe â yäaëeííoì ceãìeíòe

ÑÈÍÒÀÊÑÈÑ

	#include <sys/brk.h>
	
	char far *brkctl (command, increment, ptr)
	int command;
	long increment;
	char far *ptr;

ÎÏÈÑÀÍÈÅ
Cècòeìíûé âûçoâ brkctl âûäeëÿeò èëè ocâoáoæäaeò ïaìÿòü â äoïoëíèòeëüíûx ceãìeíòax äaííûx â cëy÷ae ìaëoé èëè cpeäíeé ìoäeëè pacïpeäeëeíèÿ ïaìÿòè. Äëÿ òoão, ÷òoáû êoìïèëÿòop Cè ìoã ècïoëüçoâaòü âoçâpaùaeìûe çía÷eíèÿ â ïpoãpaììax ìaëoé è cpeäíeé ìoäeëè, brkctl äoëæeí âoçâpaùaòü äëèííûé (far) yêaçaòeëü. Ïpè ècïoëüçoâaíèè oïècaòeëÿ far â ïpoãpaììax êoìïèëÿöèÿ äoëæía âûïoëíÿòücÿ c ôëaãoì -Me ïpè ìaëoé ìoäeëè è c ôëaãoì -Mme ïpè cpeäíeé.

Apãyìeíò command ìoæeò èìeòü oäío èç cëeäyþùèx çía÷eíèé: BR_ARGSEG, BR_NEWSEG èëè BR_IMPSEG.

increment ÿâëÿeòcÿ äëèííûì ÷ècëoì co çíaêoì. Ïpè âoçìoæíocòè oí äoëæeí áûòü ìeíüøe 64K; ecëè oí oòpèöaòeëeí, eão aácoëþòíoe çía÷eíèe äoëæío áûòü ìeíüøe cyììû äëèí âcex yäaëÿeìûx ceãìeíòoâ ïëþc ïaìÿòü, âûäeëeííaÿ â áëèæíeì ceãìeíòe ïocëe coçäaíèÿ ïpoöecca.

ptr ècïoëüçyeòcÿ òoëüêo, ecëè command paâeí BR_ARGSEG.

Ecëè increment ïoëoæèòeëeí, brkctl âoçâpaùaeò äëèííûé yêaçaòeëü ía âûäeëeííûé y÷acòoê ïaìÿòè; âûäeëÿeòcÿ, ïo êpaéíeé ìepe, uncrement áaéòoâ.

Ecëè apãyìeíò command paâeí BR_IMPSEG è oòpèöaòeëüíûé increment âûçûâaeò ocâoáoæäeíèe oäíoão èëè íecêoëüêèx ceãìeíòoâ, âoçâpaùaeìoe çía÷eíèe ïpèíaäëeæèò ïocëeäíeìy èç ocòaâøèxcÿ ceãìeíòoâ. BR_IMPSEG èìeeò â âèäy ècïoëüçoâaíèe ïocëeäíeão ceãìeíòa äaííûx. Heçaâècèìo oò òoão, èìeeò ïpoöecc ìaëyþ èëè cpeäíþþ ìoäeëü ïaìÿòè è èìeeò â äaííûé ìoìeíò òoëüêo oäèí ceãìeíò äaííûx, ïoëoæèòeëüíûé increment, ïepeïoëíÿþùèé ïocëeäíèé ceãìeíò äaííûx, âûçûâaeò coçäaíèe íoâoão ceãìeíòa.

Ecëè apãyìeíò command paâeí BR_ARGSEG, aácoëþòíoe çía÷eíèe oòpèöaòeëüíoão increment íe äoëæío ïpeâûøaòü äëèíû ceãìeíòa. Apãyìeíò ptr äoëæeí áûòü äëèííûì yêaçaòeëeì íeçaâècèìo oò ìoäeëè ïaìÿòè.

Ecëè apãyìeíò command paâeí BR_NEWSEG, increment íe ìoæeò áûòü oòpèöaòeëüíûì. Bûäeëeíèe ïaìÿòè âceãäa ïpoècxoäèò oò ía÷aëa íoâoão ceãìeíòa.

Boçâpaùaeìoe çía÷eíèe
brkctl ïo÷òè âceãäa âoçâpaùaeò äëèííûé yêaçaòeëü â êa÷ecòâe aäpeca âûäeëeííoão y÷acòêa ïaìÿòè. B cëy÷ae oøèáêè âoçâpaùaeòcÿ (char far *)-1.

Ecëè increment áoëüøe 0, âoçâpaùaeìoe çía÷eíèe ÿâëÿeòcÿ yêaçaòeëeì ía ía÷aëo âûäeëeííoão y÷acòêa ïaìÿòè.

Ecëè increment ìeíüøe èëè paâeí íyëþ, âoçâpaùaeìoe çía÷eíèe ýòo yêaçaòeëü ía ïepâûé íe ïpèíaäëeæaùèé ïpoöeccy áaéò (oáû÷ío ýòo aäpec ocâoáoæäeííoão y÷acòêa ïaìÿòè). Ecëè ïocëeäíèé èç ocòaâøèxcÿ ceãìeíòoâ ïoëoí (eão äëèía cocòaâëÿeò poâío 64K), âoçâpaùaeìoe çía÷eíèe äoëæío yêaçûâaòü ía÷aëo cëeäyþùeão ceãìeíòa (êoòopûé íe oáÿçaí cyùecòâoâaòü).

B öeëoì, äeécòâèÿ è âoçâpaùaeìûe çía÷eíèÿ ìoãyò áûòü cëeäyþùèìè:

	brkctl (BR_ARGSEG, 0, ptr)
	               Cooáùaeò ïocëeäíèé aäpec â yêaçaííoì
	               ceãìeíòe.
	
	brkctl (BR_ARGSEG, increment, ptr)
	               Óâeëè÷èâaeò yêaçaííûé ceãìeíò.
	
	brkctl (BR_NEWSEG, 0)
	               Coçäaeò íoâûé ceãìeíò c íyëeâoé äëèíoé.
	
	brkctl (BR_NEWSEG, increment)
	               Coçäaeò íoâûé ceãìeíò c äëèíoé, paâíoé
	               increment.
	
	brkctl (BR_IMPSEG, 0)
	               Cooáùaeò ïocëeäíèé aäpec â ïocëeäíeì ceãìeíòe
	               äeííûx. Moæeò ocâoáoäèòü íecêoëüêo ceãìeíòoâ.
	
	brkctl (BR__IMPSEG, increment)
	               Óâeëè÷èâaeò ïocëeäíèé ceãìeíò. B cëy÷ae
	               áoëüøoé ìoäeëè ïaìÿòè (èëè ìaëoé è cpeäíeé c
	               íecêoëüêèìè ceãìeíòaìè äaííûx) ìoæeò coçäaòü
	               íoâûé ceãìeíò.

ÑÌ. ÒÀÊÆÅ
cc(1), ld(1), machine(5), malloc(3), sbrk(3)

ÇÀÌÅ×ÀÍÈß
Cècòeìíûé âûçoâ brkctl cëeäyeò ècïoëüçoâaòü òoëüêo äëÿ äèíaìè÷ecêoão pacïpeäeëeíèÿ ïaìÿòè â ìaëoé èëè cpeäíeé ìoäeëè ïaìÿòè. B äpyãèx cëy÷aÿx cëeäyeò ïpèìeíÿòü sbrk(3), malloc(3) è äpyãèe còaíäapòíûe cpeäcòâa UNIX. Ôyíêöèoíèpoâaíèe brkctl ìoæeò èçìeíèòücÿ â ïocëeäyþùèx peaëèçaöèÿx cècòeìû.

brkctl â íacòoÿùee âpeìÿ äocòyïeí òoëüêo â peaëèçaöèÿx XENIX, ïoääepæèâaþùèx peæèì çaùèòû (protected mode).

Heçaâècèìo oò ìoäeëè ceãìeíò äaííûx, oápaùeíèe ê êoòopoìy ocyùecòâëÿeòcÿ ïo êopoòêoìy yêaçaòeëþ, äoëæeí áûòü ïepâûì ceãìeíòoì äaííûx.

Bûçoâ brkctl c BR_IMPSEG è oòpèöaòeëüíûì incremet íe ìoæeò ïpèìeíÿòücÿ ê paçäeëÿeìoìy ceãìeíòy èícòpyêöèé.
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT