亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? structalloc.c~

?? 參照MINIX3寫的操作系統(tǒng) 用GCC+NASM+BOCHS開發(fā)
?? C~
字號:
#include "../include/toyos.h"#include "structAlloc.h"

/*	Struct Alloc Manager(結(jié)構(gòu)體分配管理器)
	此管理器是為了管理內(nèi)核結(jié)構(gòu)體的動態(tài)管理分配
	2008-2-9*/
/*	初始化StructAllocer
	start	:用于分配STRUCT_ALLOC 的首地址
	size	:分配空間的大小*/	
PUBLIC void initStructAllocer(t_32 start,t_32 size)
{
	/*初始化StructAllocer各字段*/
	int i=0;
	printk("initStructAllocer\n");
	structAllocer.start=start;
	structAllocer.size=size;
	structAllocer.sid=STRUCT_ALLOC;
	structAllocer.structSize=sizeof(struct _structAlloc);
	for(i=0;i<MAX_STRUCT/8;i++)
		structAllocer.bitmap[i]=0;
	structAllocer.first=0;
	structAllocer.usable=(structAllocer.size/structAllocer.structSize);
	structAllocer.alloc=0;
	structAllocer.next=NULL;

}



/*
	分配新的Struct Alloc
	type	:結(jié)構(gòu)體的類型
	size	:結(jié)構(gòu)體的大小
	start	:用于結(jié)構(gòu)體分配的開始地址
	end		:用于結(jié)構(gòu)體分配的結(jié)束地址

*/
PUBLIC t32 mallocStructAlloc(t8 type,t32 structSize,t32 start,t32 size)
{
	
	t32 first=structAllocer.first;
	t32 index= -1;							/*保存分配的序號*/
	t8 *temp;
	t8  tmp1=1;
	structAlloc *newStruct;
	structAlloc *next;
	int i=0;
	int j=0;

	/*實(shí)際分配數(shù)已超出系統(tǒng)上限*/
	if(structAllocer.alloc+1>structAllocer.usable)
		return -1;
	/*搜索分配位圖*/
	first=first/8;
Allochead:
	for(i=first;i<MAX_STRUCT/8;i++)
	{
		temp=&structAllocer.bitmap[i];
		if(*temp==0xff)						/*此字節(jié)已分配滿,跳下一字節(jié)*/
			continue;
		else
		{									/*此字節(jié)尚為分配滿,進(jìn)一步確定位置*/
			for(j=0;j<=7;j++)
			{
				if(i*8+j>=structAllocer.usable)				/*超出了末尾,從頭開始*/
				{
					i=0;
					break;
				}
				if(~(((*temp)>>j)&0x1))			/*查找成功*/
				{
					(*temp)=(*temp)|(tmp1<<j);		/*將相應(yīng)位置位*/
					index=(i*8)+j;
					break;		
				}
			}
			break;

		}		
	}
	if(index== -1)								/*如果此時index0,就從頭搜索*/
	{
		first=0;
		goto Allochead;
	}

	/*已index為地址分配新結(jié)構(gòu)體,并初始化*/
	newStruct=(structAlloc *)(structAllocer.start+(index*structAllocer.structSize));
	newStruct->start=start;
	newStruct->size=size;
	newStruct->sid=type;
	newStruct->structSize=structSize;
	newStruct->first=0;
	newStruct->alloc=0;
	newStruct->usable=(newStruct->size)/(newStruct->structSize);
	newStruct->next=NULL;
	for(i=0;i<MAX_STRUCT/8;i++)
		newStruct->bitmap[i]=0;


    /*更新structAllocer*/
	structAllocer.first=index;
	structAllocer.alloc+=1;
	/*將新結(jié)構(gòu)體鏈入鏈表*/
	next=structAllocer.next;
	if(next==NULL)
		structAllocer.next=newStruct;
	else
	{
		while(next->next) 
			next=next->next;
		next->next=newStruct;
	}
	/*返回index*/
	return index;
}


/*
	釋放Struct Alloc
	type	:結(jié)構(gòu)體的類型
	start	:用于結(jié)構(gòu)體分配的開始地址
	end		:用于結(jié)構(gòu)體分配的結(jié)束地址

*/
PUBLIC t32 freeStructAlloc(t8 type)
{
	structAlloc *free=NULL;
	structAlloc *next=structAllocer.next;
	structAlloc *prev=NULL;
	t32 index=0;
	t8 *tmp=NULL;
	t8 tmp1=0x1;
	while(next)
	{
		if(next->sid==type)
		{
			free=next;
			if(!prev)
				structAllocer.next=next->next;
			else
				prev->next=next->next;

			break;
		}
		else
		{
			prev=next;
			next=next->next;
		}
	}
	if(!free)								/*釋放失敗*/
		return -1; 
	/*釋放位圖*/
	index=((t32)free-structAllocer.start)/(structAllocer.structSize);
	tmp=&structAllocer.bitmap[index/8];
	(*tmp)&=(~(tmp1<<(index%8)));
	structAllocer.alloc-=1;
	return index;
}
/*
	分配新的Struct 
	type	:結(jié)構(gòu)體的類型

*/
PUBLIC t32 mallocStruct(t8 type)
{
	structAlloc *alloc=NULL;
	structAlloc *next=structAllocer.next;
	t32 first=0;
	t32 index= -1;							/*保存分配的序號*/
	t8 *temp=NULL;
	t8  tmp1=1;
	int i=0,j=0;
	while(next)
		if(next->sid==type)
			break;
		else
			next=next->next;
	alloc=next;
	if(!alloc)								/*分配失敗*/
	{	
		printk("alloc==NULL");						
		return -2;
	}
	/*實(shí)際分配數(shù)已超出系統(tǒng)上限*/
	if(alloc->alloc+1>alloc->usable)
		return -1;

	first=alloc->first;
	first=first/8;
beginhead:
	for(i=first;i<MAX_STRUCT/8;i++)
	{
		temp=&alloc->bitmap[i];
		if(*temp==0xff)								/*此字節(jié)已分配滿,跳下一字節(jié)*/
			continue;					
		else
		{											/*此字節(jié)尚為分配滿,進(jìn)一步確定位置*/
			for(j=0;j<=7;j++)
			{

				if(i*8+j>=alloc->usable)				/*超出了末尾,從頭開始*/
				{
					i=0;
					break;
				}
				if((~(*temp)>>j)&0x1)				/*查找成功*/
				{
					(*temp)=(*temp)|(tmp1<<j);		/*將相應(yīng)位置位*/
					index=(i*8)+j;
					break;		
				}
			}
			break;

		}		

	}
	if(index== -1)								//如果此時index0,就從頭搜索
	{
		first=0;
		goto beginhead;
	}
	/*更新*/
    alloc->first=index;
	alloc->alloc+=1;
	return alloc->start+(index*alloc->structSize);

}

/*
	分配新的Struct 
	type	:結(jié)構(gòu)體的類型
	addr	:結(jié)構(gòu)體的首地址

*/
PUBLIC t32 freeStruct(t8 type,t32 addr)
{
	structAlloc *free=NULL;
	structAlloc *next=structAllocer.next;
	t32 index=0;
	t8 *tmp=NULL;
	t8 tmp1=0x1;
	while(next)
		if(next->sid==type)
			break;
		else
			next=next->next;
	free=next;
	if(!free)								/*釋放失敗*/
		return -1; 
	if(addr<free->start||addr>(free->start+free->size))
		return -1; 
	/*釋放位圖*/
	index=(addr-free->start)/(free->structSize);
	tmp=&free->bitmap[index/8];
	(*tmp)&=(~(tmp1<<(index%8)));
	free->alloc-=1;
	/*如果free->alloc==0 還要釋放structAlloc(現(xiàn)在還未實(shí)現(xiàn))*/
	return addr;
	
}














?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕av一区 二区| 欧美一区二区三区免费大片| 国产精品天干天干在观线| 国精产品一区一区三区mba桃花| 欧美激情中文字幕| 国产v日产∨综合v精品视频| 国产精品麻豆视频| 91在线观看成人| 亚洲成人在线免费| 精品视频在线免费看| 日本在线播放一区二区三区| 日韩免费观看高清完整版| 国产中文字幕精品| 中文字幕中文字幕在线一区| 欧美亚洲国产一区在线观看网站 | 不卡一区二区三区四区| 精品国产免费人成电影在线观看四季 | 亚洲成人精品在线观看| 884aa四虎影成人精品一区| 日本sm残虐另类| 国产片一区二区| 欧美午夜精品一区二区三区| 九九**精品视频免费播放| 日韩一区日韩二区| 欧美日韩情趣电影| 国产91色综合久久免费分享| 午夜天堂影视香蕉久久| 国产色产综合色产在线视频| 在线一区二区三区| 国产麻豆视频一区| 亚洲欧洲精品成人久久奇米网| 国产精品影视在线观看| 亚洲综合一区二区| 久久免费精品国产久精品久久久久 | 久久电影网站中文字幕| 国产精品污网站| 日韩欧美激情在线| 欧美一级日韩免费不卡| 成人免费高清视频在线观看| 天天影视涩香欲综合网 | 日韩一级片网址| www.亚洲免费av| 精品无人码麻豆乱码1区2区 | 国产亚洲欧洲997久久综合| 91国产福利在线| 成人免费av网站| 国产一区二区三区精品视频| 天使萌一区二区三区免费观看| 色999日韩国产欧美一区二区| 国产精品不卡在线| 精品国一区二区三区| 欧美在线观看视频一区二区三区| 亚洲一区二区欧美日韩| 国产女主播视频一区二区| 日韩一级免费一区| 欧美在线免费视屏| 色综合一个色综合亚洲| 日韩免费高清视频| 在线视频一区二区三| 99热在这里有精品免费| 成人免费毛片高清视频| 国产一区二区三区最好精华液| 国产精品嫩草久久久久| 国产午夜精品一区二区三区四区| 91精品国模一区二区三区| 波多野结衣欧美| 国产成a人亚洲精| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美日韩一区不卡| 国产精品99久| 国产一区日韩二区欧美三区| 美国毛片一区二区三区| 日韩精品乱码av一区二区| 亚洲成人手机在线| 亚洲va国产天堂va久久en| 中文乱码免费一区二区| 国产精品视频一二三区| 国产精品视频麻豆| 中文字幕一区在线观看| 中文字幕制服丝袜一区二区三区| 欧美日韩一区二区三区在线看 | 亚洲一区二区五区| 亚洲免费资源在线播放| 亚洲精品成人悠悠色影视| 亚洲精品菠萝久久久久久久| 亚洲精品你懂的| 亚洲一区影音先锋| 图片区小说区区亚洲影院| 日韩二区在线观看| 久久超碰97中文字幕| 国产在线视频一区二区三区| 成人综合婷婷国产精品久久| av亚洲精华国产精华| 欧美调教femdomvk| 日韩一区二区在线播放| 久久婷婷国产综合国色天香| 国产婷婷一区二区| 一区二区三区在线免费观看| 国产99久久久久| 在线观看国产91| 日韩一区二区三区在线观看 | 韩国欧美国产一区| 福利一区二区在线| 91福利国产精品| 日韩女优av电影| 国产精品国产三级国产a| 亚洲精品国产精华液| 另类成人小视频在线| 91在线你懂得| 91精品久久久久久久99蜜桃| 亚洲精品在线一区二区| 国产精品黄色在线观看| 日本中文字幕不卡| 成人精品视频一区二区三区尤物| 久久69国产一区二区蜜臀| 99这里都是精品| 91精品国产综合久久久久久| 国产精品午夜在线观看| 午夜成人免费电影| 成人av电影在线网| 欧美草草影院在线视频| 亚洲免费观看高清完整版在线观看熊| 日韩欧美另类在线| 亚洲色图一区二区三区| 国内精品伊人久久久久av影院 | 欧美日韩国产一级二级| 久久午夜羞羞影院免费观看| 亚洲欧美综合在线精品| 久久不见久久见中文字幕免费| 蜜臀av性久久久久蜜臀aⅴ| 色综合一区二区三区| 久久综合狠狠综合久久综合88| 欧美一级高清大全免费观看| 国产精品护士白丝一区av| 久久精品国产亚洲5555| 欧美性大战久久久久久久蜜臀| 欧美性色aⅴ视频一区日韩精品| 色屁屁一区二区| 久久精品亚洲麻豆av一区二区| 2020国产精品自拍| 丝袜亚洲另类欧美| 在线视频中文字幕一区二区| 久久久www成人免费毛片麻豆 | 国产宾馆实践打屁股91| 欧美日韩国产小视频| 1000精品久久久久久久久| 国产美女娇喘av呻吟久久| 日韩视频一区二区三区在线播放| 精品噜噜噜噜久久久久久久久试看| 日韩欧美一级精品久久| 亚洲在线观看免费| 99精品久久只有精品| 国产精品区一区二区三| 国产精品一区二区久激情瑜伽| 色婷婷综合久久久| 国产精品久久久久影院色老大| 一区二区三区高清不卡| 91论坛在线播放| 国产精品久久久久久久久久免费看| 亚洲伦理在线精品| 97精品国产露脸对白| 久久精品免费在线观看| 国产成人激情av| 国产视频在线观看一区二区三区| 亚洲精品中文在线观看| 国产69精品久久99不卡| 中文字幕欧美国产| av在线播放成人| 亚洲免费观看在线观看| 国产精品污www在线观看| 成a人片亚洲日本久久| 亚洲婷婷在线视频| 色综合久久88色综合天天免费| 91精品国产麻豆| 久久66热re国产| 国产日韩欧美麻豆| 成人精品在线视频观看| 亚洲日本青草视频在线怡红院| 日韩精品成人一区二区三区| 3d成人h动漫网站入口| 免费看欧美女人艹b| 91精品国产品国语在线不卡| 麻豆一区二区三区| 国产人成亚洲第一网站在线播放 | 99精品欧美一区二区蜜桃免费| 69精品人人人人| 美国av一区二区| 中文字幕免费不卡| 欧美日韩一区国产| 久久精品国产精品亚洲精品 | 欧美三级日本三级少妇99| 偷偷要91色婷婷| 日韩欧美国产三级| 成人免费看的视频| 亚洲国产精品欧美一二99| 日韩免费高清电影| 不卡在线视频中文字幕| 婷婷久久综合九色综合伊人色| 97se亚洲国产综合自在线| 亚洲一区在线观看免费观看电影高清|