Example #1
0
void *wrap_ExAllocatePoolWithTag(enum pool_type pool_type, SIZE_T size,
				 ULONG tag, const char *file, int line)
{
	void *addr;
	no_warn_unused struct alloc_info *info;

	TRACEENTER4("pool_type: %d, size: %lu, tag: %u", pool_type,
		    size, tag);

	if (size <= KMALLOC_THRESHOLD) {
		if (current_irql() < DISPATCH_LEVEL)
			addr = wrap_kmalloc(size, GFP_KERNEL, file, line);
		else
			addr = wrap_kmalloc(size, GFP_ATOMIC, file, line);
	} else {
		if (current_irql() < DISPATCH_LEVEL)
			addr = wrap_vmalloc(size, file, line);
		else
			addr = wrap__vmalloc(size, GFP_ATOMIC | __GFP_HIGHMEM,
					     PAGE_KERNEL, file, line);
	}
#if ALLOC_DEBUG > 2
	info = addr - sizeof(*info);
	info->tag = tag;
#endif
	TRACEEXIT4(return addr);
}
Example #2
0
void *wrap_kzalloc(size_t size, gfp_t flags, const char *file, int line)
{
	void *ptr = wrap_kmalloc(size, flags, file, line);
	if (ptr)
		memset(ptr, 0, size);
	return ptr;
}
Example #3
0
STDCALL void KeInitializeSpinLock(KSPIN_LOCK *lock)
{
	spinlock_t *spin_lock;

	DBGTRACE("%s: lock = %p, *lock = %p\n", __FUNCTION__, lock, *lock);

	if (!lock)
		printk(KERN_ERR "%s: lock %p is not valid pointer?\n",
			   __FUNCTION__, lock);
	spin_lock = wrap_kmalloc(sizeof(spinlock_t), GFP_KERNEL);
	if (!spin_lock)
		printk(KERN_ERR "%s: couldn't allocate space for spinlock\n",
			   __FUNCTION__);
	else
	{
		DBGTRACE("%s: allocated spinlock %p\n", __FUNCTION__, spin_lock);
		spin_lock_init(spin_lock);
		*lock = (KSPIN_LOCK)spin_lock;
	}
}