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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? structalloc.c

?? 參照MINIX3寫的操作系統 用GCC+NASM+BOCHS開發
?? C
字號:
#include "../include/toyos.h"#include "structAlloc.h"

/*	Struct Alloc Manager(結構體分配管理器)
	此管理器是為了管理內核結構體的動態管理分配
	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	:結構體的類型
	size	:結構體的大小
	start	:用于結構體分配的開始地址
	end		:用于結構體分配的結束地址

*/
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;

	/*實際分配數已超出系統上限*/
	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)						/*此字節已分配滿,跳下一字節*/
			continue;
		else
		{									/*此字節尚為分配滿,進一步確定位置*/
			for(j=0;j<=7;j++)
			{
				if(i*8+j>=structAllocer.usable)				/*超出了末尾,從頭開始*/
				{
					i=0;
					break;
				}
				if(~(((*temp)>>j)&0x1))			/*查找成功*/
				{
					(*temp)=(*temp)|(tmp1<<j);		/*將相應位置位*/
					index=(i*8)+j;
					break;		
				}
			}
			break;

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

	/*已index為地址分配新結構體,并初始化*/
	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;
	/*將新結構體鏈入鏈表*/
	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	:結構體的類型
	start	:用于結構體分配的開始地址
	end		:用于結構體分配的結束地址

*/
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	:結構體的類型

*/
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;
	}
	/*實際分配數已超出系統上限*/
	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)								/*此字節已分配滿,跳下一字節*/
			continue;					
		else
		{											/*此字節尚為分配滿,進一步確定位置*/
			for(j=0;j<=7;j++)
			{

				if(i*8+j>=alloc->usable)				/*超出了末尾,從頭開始*/
				{
					i=0;
					break;
				}
				if((~(*temp)>>j)&0x1)				/*查找成功*/
				{
					(*temp)=(*temp)|(tmp1<<j);		/*將相應位置位*/
					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	:結構體的類型
	addr	:結構體的首地址

*/
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(現在還未實現)*/
	return addr;
	
}














?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国偷自产一区二区使用方法| 国内精品不卡在线| 国产精品久久久久久久久快鸭| 精品噜噜噜噜久久久久久久久试看 | av在线一区二区三区| 国产成人三级在线观看| 国产不卡在线一区| 成人动漫视频在线| 91色综合久久久久婷婷| 一本到不卡精品视频在线观看| 色狠狠一区二区三区香蕉| 欧美亚洲综合久久| 欧美一区二区在线免费观看| 欧美va天堂va视频va在线| 国产女主播一区| 亚洲欧美日韩成人高清在线一区| 亚洲美女视频在线| 视频一区视频二区中文字幕| 免费日韩伦理电影| 国产成人高清在线| 在线看日韩精品电影| 欧美一区二区三区思思人| 精品欧美一区二区三区精品久久| 久久亚洲精品国产精品紫薇| 亚洲欧美综合另类在线卡通| 亚洲高清一区二区三区| 狠狠久久亚洲欧美| 色婷婷精品大在线视频| 日韩欧美国产午夜精品| 亚洲色图第一区| 婷婷夜色潮精品综合在线| 国产精品中文字幕日韩精品| 色偷偷成人一区二区三区91| 欧美大尺度电影在线| 1024国产精品| 久久爱www久久做| 在线免费一区三区| 精品噜噜噜噜久久久久久久久试看| 国产精品白丝在线| 六月丁香婷婷色狠狠久久| 91美女片黄在线观看| 精品捆绑美女sm三区| 亚洲精品日产精品乱码不卡| 精品一区免费av| 欧美一区二区精品久久911| 国产欧美精品一区二区色综合 | 欧美日韩国产高清一区二区三区| 久久久国际精品| 天天综合网天天综合色| 久久激情五月激情| 蜜臀精品一区二区三区在线观看| 韩国午夜理伦三级不卡影院| 99re在线精品| 国产欧美日韩中文久久| 美女性感视频久久| 91福利区一区二区三区| 日韩一区欧美一区| 国产成人在线观看免费网站| 欧美不卡在线视频| 免费成人av在线| 欧美在线短视频| 亚洲欧美日韩国产成人精品影院| 国产91清纯白嫩初高中在线观看| 精品国产精品一区二区夜夜嗨| 亚洲超丰满肉感bbw| 在线精品亚洲一区二区不卡| 亚洲婷婷综合色高清在线| 国产99久久久久久免费看农村| 欧美成人bangbros| 精品无人码麻豆乱码1区2区| 精品国产成人系列| 久久99热狠狠色一区二区| 91麻豆精品久久久久蜜臀| 亚洲成av人片一区二区| 欧美日韩国产综合一区二区| 亚洲香蕉伊在人在线观| 欧美日韩免费一区二区三区| 亚洲综合另类小说| 欧美日韩国产大片| 丝袜美腿亚洲一区二区图片| 欧美男人的天堂一二区| 日韩av电影天堂| 精品久久人人做人人爽| 国产精品一二三| 中文字幕综合网| 91九色02白丝porn| 日韩二区在线观看| 欧美成人在线直播| 成人免费视频caoporn| 亚洲特级片在线| 欧美日韩免费在线视频| 国产中文一区二区三区| 欧美国产禁国产网站cc| 色噜噜狠狠色综合欧洲selulu| 亚洲国产成人高清精品| 日韩一区二区三区三四区视频在线观看 | 欧美一区二区三区喷汁尤物| 天天做天天摸天天爽国产一区| 欧美一区二区免费视频| 粉嫩在线一区二区三区视频| 亚洲综合久久久| 久久综合色之久久综合| av在线不卡电影| 日本亚洲天堂网| 国产精品麻豆视频| 欧美日韩精品欧美日韩精品一| 国精产品一区一区三区mba桃花| 欧美—级在线免费片| 777午夜精品免费视频| 懂色av一区二区三区蜜臀| 午夜精品成人在线视频| 欧美国产一区视频在线观看| 欧美日韩亚洲不卡| 99这里只有久久精品视频| 久久99久久99| 亚洲狠狠爱一区二区三区| 中文字幕精品一区二区精品绿巨人 | 欧美性欧美巨大黑白大战| 国产一区亚洲一区| 日韩和的一区二区| 亚洲欧美日韩系列| 精品理论电影在线| 制服丝袜亚洲播放| 色8久久精品久久久久久蜜| 久久精品999| 日韩电影免费一区| 亚洲靠逼com| 国产女人18毛片水真多成人如厕| 8x8x8国产精品| 欧美在线不卡一区| 91丨九色丨黑人外教| 国产在线精品一区二区夜色| 亚洲国产精品尤物yw在线观看| 中文字幕精品三区| 国产日韩亚洲欧美综合| 欧美一级高清大全免费观看| 欧美日韩一区二区三区四区五区| 成人午夜在线免费| 国产一区二区三区免费| 免费观看日韩av| 午夜欧美在线一二页| 亚洲综合av网| 亚洲午夜在线视频| 亚洲成人午夜电影| 一区二区成人在线| 一区二区三区在线免费观看| 国产精品初高中害羞小美女文| 国产人妖乱国产精品人妖| 久久久美女艺术照精彩视频福利播放| 欧美一级片在线观看| 欧美一区二区美女| 日韩亚洲电影在线| 日韩精品一区二区三区四区视频| 91精品国产综合久久精品| 宅男噜噜噜66一区二区66| 日韩三级免费观看| 久久久久国产免费免费| 国产女同性恋一区二区| 亚洲国产精品黑人久久久 | 色欧美日韩亚洲| 91亚洲精品一区二区乱码| 99久久久久免费精品国产| 91免费在线播放| 欧美性大战久久久久久久| 欧美精品在线一区二区| 日韩欧美一二三四区| 久久久亚洲精华液精华液精华液| 国产欧美日本一区视频| 亚洲欧美国产高清| 日韩精品一二三区| 国产精品456| 一本到一区二区三区| 91精品国产91久久久久久一区二区| 欧美zozo另类异族| 国产精品久久久久久久午夜片| 亚洲精品ww久久久久久p站| 日本不卡一二三| 丁香桃色午夜亚洲一区二区三区| 色婷婷一区二区| 欧美一级电影网站| 国产精品夫妻自拍| 午夜精品影院在线观看| 国产一区二区三区观看| 91成人免费网站| 精品美女一区二区| 亚洲精品伦理在线| 秋霞影院一区二区| av在线不卡免费看| 欧美大胆人体bbbb| 一区二区三区在线高清| 精品亚洲成a人| 欧美性一级生活| 国产精品久久久久一区二区三区| 亚洲va韩国va欧美va| 国产91精品精华液一区二区三区| 欧美日韩久久久一区| 国产精品美女久久久久久| 免费观看日韩av| 欧美四级电影网| 国产精品久久久久aaaa|