Changeset 5010:065b9de0acf7 in roaraudio for libroar/libroar.c


Ignore:
Timestamp:
05/26/11 09:26:00 (11 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

Updated roar_reset() (Closes: #131)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/libroar.c

    r4998 r5010  
    146146} 
    147147 
    148 int roar_reset(int forked) { 
     148int roar_reset(enum roar_reset what) { 
    149149 char c; 
    150150 int i; 
     151 enum roar_reset subsets = ROAR_RESET_NONE; 
    151152 
    152153 roar_err_set(ROAR_ERROR_NONE); 
    153154 
    154  for (i = 0; i < 16; i++) { 
    155   roar_random_gen_nonce(&c, 1); 
    156   roar_random_uint16(); 
    157   roar_random_uint32(); 
    158  } 
    159  
     155 switch (what) { 
     156  case ROAR_RESET_NONE: 
     157    return 0; 
     158   break; 
     159  case ROAR_RESET_UNKNOWN: 
     160  case ROAR_RESET_EOL: 
     161    roar_err_set(ROAR_ERROR_INVAL); 
     162    return -1; 
     163   break; 
     164  case ROAR_RESET_ON_FORK: 
     165    subsets |= ROAR_RESET_MEMORY|ROAR_RESET_RANDOMPOOL; 
     166   break; 
     167  case ROAR_RESET_ON_EXIT: 
     168  case ROAR_RESET_ON_PRE_EXEC: 
     169    subsets |= ROAR_RESET_MEMORY|ROAR_RESET_CONFIG; 
     170   break; 
     171  default: 
     172    if ( what & 0x80 ) { 
     173     subsets |= what; 
     174    } else { 
     175     roar_err_set(ROAR_ERROR_INVAL); 
     176     return -1; 
     177    } 
     178   break; 
     179 } 
     180 
     181 // strip 0x80 so we can easly test on the other bit per subsystem. 
     182 what |= 0x80; 
     183 what -= 0x80; 
     184 
     185 if ( what & ROAR_RESET_MEMORY ) { 
     186  roar_mm_reset(); 
     187 } 
     188 
     189 if ( what & ROAR_RESET_CONFIG ) { 
     190  roar_libroar_reset_config(); 
     191 } 
     192 
     193 if ( what & ROAR_RESET_RANDOMPOOL ) { 
     194  for (i = 0; i < 16; i++) { 
     195   roar_random_gen_nonce(&c, 1); 
     196   roar_random_uint16(); 
     197   roar_random_uint32(); 
     198  } 
     199 } 
     200 
     201 roar_err_set(ROAR_ERROR_NONE); 
    160202 return 0; 
    161203} 
Note: See TracChangeset for help on using the changeset viewer.