added initial mcache structs and API;

v0.5.xx
Alexander Vdolainen 10 years ago
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…
Cancel
Save