|
éíñ
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ËÃÉÊ.
|