Changeset 4234:ee0035abd1ff in roaraudio


Ignore:
Timestamp:
08/25/10 01:44:54 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

done some work on the memlock functions

Location:
roard
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • roard/include/memlock.h

    r4233 r4234  
    3838int memlock_str2level(const char * str); 
    3939int memlock_set_level(int level); 
     40int memlock_register(int level, void * addr, size_t len); 
    4041void memlock_unload(); 
    4142void memlock_reload(); 
  • roard/memlock.c

    r4233 r4234  
    2626#include "roard.h" 
    2727 
     28#define MAX_SEGMENTS 16 
     29 
     30struct memlock { 
     31 int level; 
     32 void * addr; 
     33 size_t len; 
     34}; 
     35 
     36static struct memlock memlock_table[MAX_SEGMENTS]; 
     37 
     38static volatile int memlock_table_inited = 0; 
     39 
     40static void memlock_table_init (void) { 
     41 if ( memlock_table_inited ) 
     42  return; 
     43 
     44 memset(memlock_table, 0, sizeof(memlock_table)); 
     45 
     46 memlock_table_inited = 1; 
     47 
     48 memlock_register(MEMLOCK_MEDIUM, memlock_table, sizeof(memlock_table)); 
     49} 
     50 
     51int memlock_register(int level, void * addr, size_t len) { 
     52 int i; 
     53 
     54 if ( !memlock_table_inited ) 
     55  memlock_table_init(); 
     56 
     57 for (i = 0; i < MAX_SEGMENTS; i++) { 
     58  if ( memlock_table[i].addr == NULL ) { 
     59   memlock_table[i].level = level; 
     60   memlock_table[i].addr  = addr; 
     61   memlock_table[i].len   = len; 
     62   return 0; 
     63  } 
     64 } 
     65 
     66 return -1; 
     67} 
     68 
    2869int memlock_str2level(const char * str) { 
    2970 if ( str == NULL ) 
     
    4889 static int old_level = MEMLOCK_NONE; 
    4990 
     91 if ( !memlock_table_inited ) 
     92  memlock_table_init(); 
     93 
    5094 if ( level == old_level ) 
    5195  return 0; 
Note: See TracChangeset for help on using the changeset viewer.