Lines Matching refs:pool
41 CRYPTO_BUFFER_POOL *pool = OPENSSL_malloc(sizeof(CRYPTO_BUFFER_POOL)); in CRYPTO_BUFFER_POOL_new() local
42 if (pool == NULL) { in CRYPTO_BUFFER_POOL_new()
46 OPENSSL_memset(pool, 0, sizeof(CRYPTO_BUFFER_POOL)); in CRYPTO_BUFFER_POOL_new()
47 pool->bufs = lh_CRYPTO_BUFFER_new(CRYPTO_BUFFER_hash, CRYPTO_BUFFER_cmp); in CRYPTO_BUFFER_POOL_new()
48 if (pool->bufs == NULL) { in CRYPTO_BUFFER_POOL_new()
49 OPENSSL_free(pool); in CRYPTO_BUFFER_POOL_new()
53 CRYPTO_MUTEX_init(&pool->lock); in CRYPTO_BUFFER_POOL_new()
55 return pool; in CRYPTO_BUFFER_POOL_new()
58 void CRYPTO_BUFFER_POOL_free(CRYPTO_BUFFER_POOL *pool) { in CRYPTO_BUFFER_POOL_free() argument
59 if (pool == NULL) { in CRYPTO_BUFFER_POOL_free()
64 CRYPTO_MUTEX_lock_write(&pool->lock); in CRYPTO_BUFFER_POOL_free()
65 assert(lh_CRYPTO_BUFFER_num_items(pool->bufs) == 0); in CRYPTO_BUFFER_POOL_free()
66 CRYPTO_MUTEX_unlock_write(&pool->lock); in CRYPTO_BUFFER_POOL_free()
69 lh_CRYPTO_BUFFER_free(pool->bufs); in CRYPTO_BUFFER_POOL_free()
70 CRYPTO_MUTEX_cleanup(&pool->lock); in CRYPTO_BUFFER_POOL_free()
71 OPENSSL_free(pool); in CRYPTO_BUFFER_POOL_free()
75 CRYPTO_BUFFER_POOL *pool) { in CRYPTO_BUFFER_new() argument
76 if (pool != NULL) { in CRYPTO_BUFFER_new()
81 CRYPTO_MUTEX_lock_read(&pool->lock); in CRYPTO_BUFFER_new()
83 lh_CRYPTO_BUFFER_retrieve(pool->bufs, &tmp); in CRYPTO_BUFFER_new()
87 CRYPTO_MUTEX_unlock_read(&pool->lock); in CRYPTO_BUFFER_new()
109 if (pool == NULL) { in CRYPTO_BUFFER_new()
113 buf->pool = pool; in CRYPTO_BUFFER_new()
115 CRYPTO_MUTEX_lock_write(&pool->lock); in CRYPTO_BUFFER_new()
116 CRYPTO_BUFFER *duplicate = lh_CRYPTO_BUFFER_retrieve(pool->bufs, buf); in CRYPTO_BUFFER_new()
120 inserted = lh_CRYPTO_BUFFER_insert(pool->bufs, &old, buf); in CRYPTO_BUFFER_new()
125 CRYPTO_MUTEX_unlock_write(&pool->lock); in CRYPTO_BUFFER_new()
138 CRYPTO_BUFFER* CRYPTO_BUFFER_new_from_CBS(CBS *cbs, CRYPTO_BUFFER_POOL *pool) { in CRYPTO_BUFFER_new_from_CBS() argument
139 return CRYPTO_BUFFER_new(CBS_data(cbs), CBS_len(cbs), pool); in CRYPTO_BUFFER_new_from_CBS()
147 CRYPTO_BUFFER_POOL *const pool = buf->pool; in CRYPTO_BUFFER_free() local
148 if (pool == NULL) { in CRYPTO_BUFFER_free()
160 CRYPTO_MUTEX_lock_write(&pool->lock); in CRYPTO_BUFFER_free()
162 CRYPTO_MUTEX_unlock_write(&buf->pool->lock); in CRYPTO_BUFFER_free()
170 void *found = lh_CRYPTO_BUFFER_delete(pool->bufs, buf); in CRYPTO_BUFFER_free()
174 CRYPTO_MUTEX_unlock_write(&buf->pool->lock); in CRYPTO_BUFFER_free()