Example #1
0
struct workqueue *workqueue_create(struct workqueue *wq, int flags)
{
	KOBJ_CREATE(wq, flags, WORKQUEUE_KMALLOC);
	heap_create(&wq->tasks, HEAP_LOCKLESS, HEAPMODE_MAX);
	spinlock_create(&wq->lock);
	return wq;
}
Example #2
0
struct net_packet *net_packet_create(struct net_packet *packet, int flags)
{
	KOBJ_CREATE(packet, flags, NP_FLAG_ALLOC);
	TRACE_MSG("net.packet", "creating new packet %x\n", packet);
	packet->count = 1;
	packet->data_header = packet->data;
	return packet;
}
Example #3
0
struct mutex *mutex_create(struct mutex *m, unsigned flags)
{
	KOBJ_CREATE(m, flags, MT_ALLOC);
	m->lock = ATOMIC_VAR_INIT(0);
	m->magic = MUTEX_MAGIC;
	blocklist_create(&m->blocklist, 0, "mutex");
	return m;
}
Example #4
0
struct ticker *ticker_create(struct ticker *ticker, int flags)
{
	KOBJ_CREATE(ticker, flags, TICKER_KMALLOC);
	ticker->tick = 0;
	heap_create(&ticker->heap, HEAP_LOCKLESS, HEAPMODE_MIN);
	spinlock_create(&ticker->lock);
	return ticker;
}
Example #5
0
struct stack *stack_create(struct stack *stack, int flags)
{
	KOBJ_CREATE(stack, flags, STACK_KMALLOC);
	spinlock_create(&stack->lock);
	memset(&__sentry, 0, sizeof(__sentry));
	stack->top = &__sentry;
	return stack;
}
Example #6
0
struct hash *hash_create(struct hash *h, int flags, size_t length)
{
	KOBJ_CREATE(h, flags, HASH_ALLOC);
	mutex_create(&h->lock, 0);
	if(length > 0)
		h->table = kmalloc(length * sizeof(struct linkedlist *));
	h->length = length;
	return h;
}
Example #7
0
struct charbuffer *charbuffer_create(struct charbuffer *cb, int flags, size_t cap)
{
	KOBJ_CREATE(cb, flags, CHARBUFFER_ALLOC);
	if(!(flags & CHARBUFFER_LOCKLESS))
		mutex_create(&cb->lock, 0);
	cb->buffer = kmalloc(sizeof(unsigned char) * cap);
	blocklist_create(&cb->readers, 0, "charbuffer-readers");
	blocklist_create(&cb->writers, 0, "charbuffer-writers");
	cb->cap = cap;
	return cb;
}