OPTION psf_version = 2.1.0 ; 

BEGIN LIBRARY xilkernel 

     OPTION drc = kernel_drc ; 
     option copyfiles = all;		
     PARAM name = processor_type, desc = "Processor type: microblaze or ppc", type = enum, values = ("MicroBlaze"=mb, "PowerPC"=ppc), default = mb; 

     PARAM name = config_mutex, desc = "Mutual Exclusion Calls", type = bool, default = true, permit = user; 

     BEGIN CATEGORY config_process 
     PARAM name = config_process, desc = "Process Management", type = bool, default = true, permit = user; 
     PARAM name = max_procs, desc = "Max Processes", type = int,  default =10,  drc = drc_max_proc; 
     PARAM name = max_readyq, desc = "ReadyQ size",  type = int,  default = 10; 
     PARAM name = config_process_exit,  desc = "process_exit() function", type = bool, default = false; 
     PARAM name = config_process_kill, desc = "process_kill() function", type = bool, default = false; 
     PARAM name = config_process_sleep, desc = "process_sleep() function", type = bool, default = false; 
     PARAM name = config_process_yield, desc = "process_yield() function", type = bool, default = false; 
     BEGIN ARRAY process_table 
     PROPERTY desc = "Process Table"; 
     PROPERTY size = n_init_process; 
     PARAM name = process_start_addr, desc = "Process Start Address", type = int; 
     PARAM name = process_prio, desc = "Process Priority", type = int; 
     END ARRAY 
     END CATEGORY 

     BEGIN CATEGORY config_sched 
     PARAM name = config_sched, desc = "Scheduling", type = bool, default = true, permit = user ; 
     PARAM name = sched_type, desc = "Scheduling type: 1 - RR, 2 - Prio", type = int, default = 2, range = (1, 2); 
     PARAM name = n_prio, desc = "No. of Priorites", type = int, default = 32 ;
     END CATEGORY 

     BEGIN CATEGORY config_thread_support
     PARAM name = config_thread_support, desc = "Configure threads", type = bool, default = false ; 
     PARAM name = max_threads, desc = "Max. threads", type = int, default = 5; 
     PARAM name = thread_stack_size, desc = "Thread Stack Size(bytes)", type = int, default = 600; 
     END CATEGORY 

     BEGIN CATEGORY config_sema 
     PARAM name = config_sema, desc = "Semaphore", type = bool, default = false ; 
     PARAM name = max_sema, desc = "Max Semaphores", type = int, default = 20; 
     PARAM name = max_sema_waitq, desc = "Semaphore Wait Q length", type = int, default = 10; 
     END CATEGORY 

     BEGIN CATEGORY config_msgq 
     PARAM name = config_msgq, desc = "Configure Message Queue", type = bool, default = false, dep = (config_sema = true) ; 
     PARAM name = max_msgsize, desc = "Max Message size", type = int, default = 20;  
     PARAM name = max_msg, desc = "Max Number of Message Queues in system", type = int, default = 20; 
 
     BEGIN ARRAY msgq_table 
     PROPERTY desc = "MessageQ Table"; 
     PROPERTY size = n_msgq; 
     PARAM name = msg_size, desc = "Message Size", type = int; 
     PARAM name = msgq_len, desc = "Message Queue Length", type = int; 
     END ARRAY 
     END CATEGORY 

     BEGIN CATEGORY config_shm 
     PARAM name = config_shm, desc = "Configure Shared Memory", type = bool, default = false ; 
     BEGIN ARRAY shm_table 
     PROPERTY desc = "Shared Memory Table"; 
     PROPERTY size = n_shm; 
     PARAM name = shm_size, desc = "Shared Memory Size", type = int; 
     END ARRAY 
     END CATEGORY

     BEGIN CATEGORY config_malloc 
     PARAM name = config_malloc, desc = "Configure Memory Management", type= bool, default =  false ; 
     BEGIN ARRAY mem_table 
     PROPERTY desc = "Memory Block Table"; 
     PROPERTY size = n_malloc_blocks; 
     PARAM name = mem_bsize, desc = "Memory Block Size", type = int; 
     PARAM name = mem_nblks, desc = "Num. of Memory Blocks", type int ; 
     END ARRAY 
     END CATEGORY

END LIBRARY 
