size must be a power of 2 */
| 78 | |
| 79 | /* size must be a power of 2 */ |
| 80 | static gen_lock_set_t* init_lock_set(int *size) |
| 81 | { |
| 82 | gen_lock_set_t *lset; |
| 83 | |
| 84 | lset=0; /* kill warnings */ |
| 85 | for( ; *size ; *size=((*size)>>1) ) { |
| 86 | LM_INFO("probing %d set size\n", *size); |
| 87 | /* create a lock set */ |
| 88 | lset = lock_set_alloc( *size ); |
| 89 | if (lset==0) { |
| 90 | LM_INFO("cannot get %d locks\n", *size); |
| 91 | continue; |
| 92 | } |
| 93 | /* init lock set */ |
| 94 | if (lock_set_init(lset)==0) { |
| 95 | LM_INFO("cannot init %d locks\n", *size); |
| 96 | lock_set_dealloc( lset ); |
| 97 | lset = 0; |
| 98 | continue; |
| 99 | } |
| 100 | /* alloc and init successful */ |
| 101 | break; |
| 102 | } |
| 103 | |
| 104 | if (*size==0) { |
| 105 | LM_ERR("cannot get a lock set\n"); |
| 106 | return 0; |
| 107 | } |
| 108 | return lset; |
| 109 | } |
| 110 | |
| 111 | |
| 112 |
no test coverage detected