Esempio n. 1
0
void* buf_find_buf(const void* dest, size_t dnum, const void *src, size_t snum)
{
	uint8_t *l__dest = (void*)dest;
	
	if ((dest == NULL) || (src == NULL))
	{
		*tls_errno = ERR_INVALID_ADDRESS;
		return NULL;
	}
	
	if (snum > dnum)
	{
		*tls_errno = ERR_INVALID_ARGUMENT;
		return NULL;
	}
	
	if (snum == 0)
	{
		return (void*)dest;
	}
	
	/* We work until "dnum" is greater or equal to "snum" */
	while(dnum >= snum)
	{
		if (!buf_compare(l__dest, src, snum )) return l__dest;
		l__dest ++;
		dnum --;
	}
	
	return NULL;
}
Esempio n. 2
0
static void memcpyperf(void *src, void *dst, u32 size, u32 cnt)
{
	struct timespec beforets;
	struct timespec afterts;
	long val[OUT_TRY_CNT];
	long sum = 0;
	u32 i, j;

	memset(src, 0xab, size);
	memset(dst, 0x00, size);

	for (j = 0; j < OUT_TRY_CNT; j++) {
		getnstimeofday(&beforets);
		for (i = 0; i < cnt; i++)
			memcpy(dst, src, size);
		getnstimeofday(&afterts);
		mdelay(100);
		val[j] = update_timeval(beforets, afterts)/cnt;
	}

	for (j = 0; j < OUT_TRY_CNT; j++)
		sum += val[j];

	printk(KERN_ERR "%lu\n", sum/OUT_TRY_CNT);

	if (buf_compare(src, dst, size))
		printk(KERN_ERR "copy err\n");
}
Esempio n. 3
0
utf8_t* str_find(const utf8_t* dest, size_t dmax, const utf8_t* src, size_t smax)
{
	utf8_t *l__dest = (void*)dest;
	size_t l__dnum;
	size_t l__snum;
	
	if ((dest == NULL) || (src == NULL))
	{
		*tls_errno = ERR_INVALID_ADDRESS;
		return NULL;
	}
	
	/* Get the correct size of "dest" and "src" */
	l__dnum = str_len(dest, dmax);
	if (*tls_errno) return NULL;
	
	l__snum = str_len(src, smax);
	if (*tls_errno) return NULL;	
	
	/* Work with them */
	if (l__snum > l__dnum)
	{
		return NULL;
	}
	
	if (l__snum == 0)
	{
		return (void*)dest;
	}
	
	/* We work until "dnum" is greater or equal to "snum" */
	while(l__dnum >= l__snum)
	{
		if (!buf_compare(l__dest, src, l__snum)) return l__dest;
		l__dest ++;
		l__dnum --;
	}
	
	return NULL;
}