⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 allockm.h

📁 a linux like c++ kernel
💻 H
字号:
#ifndef _MMALLOCKM_H#define _MMALLOCKM_H#include <lib/queue.h>#include <lib/math.h>#include "allocpage.h"struct pool_t;struct kmobj_t {	kmobj_t * next;	long longs[0];	void markmagic(int objsize);	void checkmagic(int objsize);};struct bucket_t {	CHAIN(,bucket_t);	pool_t * pool;	int objsize;	kmobj_t * freeobj;	short ncurfree;	short nmaxfree;	kmobj_t objs[0];	void init(pool_t * pool_);	void * alloc();	void free(void * p);	void check(kmobj_t * o);};QUEUE(,bucket_t);typedef Q(,bucket_t) bucketq_t;/* object pool */struct pool_t {	CHAIN(,pool_t);	char * name;	int objsize;	bucketq_t richq; /* circluar list of buckets that has free buf */	bucketq_t poorq; /* circluar list of buckets that has no free buf*/	void * operator new (size_t size) { return allocbm(size); }	pool_t(char * name, int objsize);	void * alloc(int flags);	void free(void * p);	int alloced();};QUEUE(,pool_t);#define ALLOCKMMAX (PAGESIZE - sizeof(bucket_t))extern void allockminit();extern void * allockm(int flags, int size);extern void freekm(void * ptr);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -