added initial mcache structs and API;
parent
8290bdb051
commit
1f461fd454
@ -0,0 +1,50 @@
|
||||
#ifndef __MCACHE_H__
|
||||
#define __MCACHE_H__
|
||||
|
||||
#include <stdint.h>
|
||||
#include <time.h>
|
||||
#include <sys/types.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include <tdata/usrtc.h>
|
||||
#include <tdata/idx_allocator.h>
|
||||
|
||||
#define _MCACHE_MAGIC 0xabcdbeef
|
||||
#define _MPG_SIZE 4096
|
||||
|
||||
#define _MCACHE_EMINSIZE sizeof(unsigned long) + 8
|
||||
#define _MCACHE_EMAXSIZE sizeof(unsigned long) + 224
|
||||
|
||||
#define _MCACHE_PREALLOC (1 << 1) /* preallocate elements on initialization */
|
||||
#define _MCACHE_ALLOCAHEAD (1 << 2) /* allocate more ahead */
|
||||
#define _MCACHE_MEMFREE (1 << 3) /* free as possible */
|
||||
|
||||
/* this structure used to store info on page, and located
|
||||
* at the beginning of the allocated page
|
||||
*/
|
||||
struct _mpg {
|
||||
void *addr;
|
||||
unsigned int use;
|
||||
usrtc_node_t node;
|
||||
};
|
||||
|
||||
typedef struct __sntl_mcache_ {
|
||||
unsigned int magic; /** < first 32bit to check it */
|
||||
usrtc_t pg_tree; /** < pages tree */
|
||||
size_t esize; /** < element size*/
|
||||
pthread_rwlock_t lock; /** < thread safe cap */
|
||||
usrtc_t allocated; /** < allocated elements to increase allocation */
|
||||
usrtc_t used; /** < used ones */
|
||||
unsigned int epc; /** < elements per cache page */
|
||||
int flags; /** < flags of the cache */
|
||||
} cntl_mcache_t;
|
||||
|
||||
int sntl_mcache_init(sntl_mcache_t*, size_t, int);
|
||||
|
||||
void* sntl_mcache_alloc(sntl_mcache_t*);
|
||||
|
||||
void sntl_mcache_free(void*);
|
||||
|
||||
void sntl_mcache_destroy(sntl_mcache_t*);
|
||||
|
||||
#endif /* __MCACHE_H__ */
|
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Secure Network Transport Layer Library implementation.
|
||||
* This is a proprietary software. See COPYING for further details.
|
||||
*
|
||||
* (c) 2013-2014 Copyright Askele, inc. <http://askele.com>
|
||||
* (c) 2013-2014 Copyright Askele Ingria, inc. <http://askele-ingria.com>
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <pthread.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include <tdata/usrtc.h>
|
||||
|
||||
#include <sntl/mcache.h>
|
||||
|
||||
int sntl_mcache_init(sntl_mcache_t *mc, size_t esize, int flags)
|
||||
{
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
void* sntl_mcache_alloc(sntl_mcache_t *mc)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void sntl_mcache_free(void *p)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
void sntl_mcache_destroy(sntl_mcache_t *mc)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
Loading…
Reference in New Issue