www.pudn.com > LFYOS.zip > process.h


 
#ifndef OS_PROCESS_STRUCT 
#define OS_PROCESS_STRUCT 
 
struct thread_physical_block { 
	int stack_memory_id,stack_block_id; 
	int memory_id,block_id; 
}; 
 
#define RESET_PHYSICAL_BLOCK(b,v)			\ 
{							\ 
	(b).stack_memory_id=(v);			\ 
	(b).stack_block_id=(v);				\ 
	(b).memory_id=(v);				\ 
	(b).block_id=(v);				\ 
} 
 
#define COPY_THREAD_PHYSICAL_BLOCK(s,d)			\ 
{							\ 
	(d).stack_memory_id	=(s).stack_memory_id;	\ 
	(d).stack_block_id	=(s).stack_block_id;	\ 
	(d).memory_id		=(s).memory_id;		\ 
	(d).block_id		=(s).block_id;		\ 
} 
 
#define COMPARE_THREAD_PHYSICAL_BLOCK(s,d)		\ 
(							\ 
	  ((d).stack_memory_id ==(s).stack_memory_id)	\ 
	&&((d).stack_block_id  ==(s).stack_block_id)	\ 
	&&((d).memory_id       ==(s).memory_id)		\ 
	&&((d).block_id        ==(s).block_id)		\ 
) 
 
struct network_address{ 
	int a; 
}; 
 
#define COPY_NETWORK_ADDRESS(s,d)	{(d).a=(s).a;} 
 
struct file{ 
	struct{ 
		struct network_address network_node; 
		int server_processor,server_process,file_handler; 
	}file; 
	struct{ 
		int processor,process; 
	}proxy; 
	int memory_process,open_window_id; 
	int window_base_1,window_base_2,window_length,right; 
	struct capability capability; 
	int read_in_flag,swap_out_flag; 
}; 
 
#define COPY_FILE(s,d)						\ 
{								\ 
	COPY_NETWORK_ADDRESS(((s).file.network_node),		\ 
		((d).file.network_node));			\ 
	(d).file.server_processor=(s).file.server_processor;	\ 
	(d).file.server_process	=(s).file.server_process;	\ 
	(d).file.file_handler	=(s).file.file_handler;		\ 
	(d).proxy.processor	=(s).proxy.processor;		\ 
	(d).proxy.process	=(s).proxy.process;		\ 
	(d).memory_process	=(s).memory_process;		\ 
	(d).open_window_id	=(s).open_window_id;		\ 
	(d).window_base_1	=(s).window_base_1;		\ 
	(d).window_base_2	=(s).window_base_2;		\ 
	(d).window_length	=(s).window_length;		\ 
	(d).right		=(s).right;			\ 
	COPY_CAPABILITY((s).capability,(d).capability);		\ 
	(d).read_in_flag	=(s).read_in_flag;		\ 
	(d).swap_out_flag	=(s).swap_out_flag;		\ 
} 
 
union file_system_operation_parameter{ 
	struct { 
		int begin_rw,end_rw; 
	}read_write; 
}; 
 
#define COPY_OPERATION_PARAMETER(s,d)				\ 
{								\ 
	char *ps=(char *)&(s),*pd=(char *)&(d);			\ 
	int i,length;						\ 
	length=sizeof(union file_system_operation_parameter);	\ 
	for(i=0;i