Subject: Re: 915resolution support for DragonFly
To: None <pkgsrc-users@netbsd.org>
From: Christian Biere <christianbiere@gmx.de>
List: pkgsrc-users
Date: 02/05/2007 15:14:20
Sergey Glushchenko wrote:
> Here is the patch against pkgsrc-2006Q4.
>
> Sergey
>
> +--- 915resolution.c.orig 2006-02-02 16:28:34.000000000 +0200
> ++++ 915resolution.c 2007-02-05 05:06:58.000000000 +0200
> +@@ -22,7 +22,28 @@
> #include <string.h>
> #include <sys/mman.h>
> #include <fcntl.h>
> @@ -22,10 +20,29 @@ $NetBSD: patch-aa,v 1.2 2006/11/13 04:15
> +#define OUTL(a, b) outl(b, a)
> +#define OUTB(a, b) outb(b, a)
> +#endif
> ++#ifdef __DragonFly__
> ++#include <cpu/cpufunc.h>
> ++#define OUTL(a, b) outl(b, a)
> ++#define OUTB(a, b) outb(b, a)
> ++#define memmem(a, b, c, d) strstr(a, c)
This not correct and mem* is reserved for <string.h>. You could use
this implementation or roll your own.
/**
* Similar to strstr() but for raw memory without NUL-termination.
*
* @param data The memory to scan.
* @param data_size The length of data.
* @param pattern The byte pattern to look for.
* @param pattern_size The length of the pattern.
* @return NULL if not found. Otherwise, the start address of the first match
* is returned.
*/
void *
compat_memmem(const void *data, size_t data_size,
const void *pattern, size_t pattern_size)
{
const char *next, *p, *pat;
pat = pattern;
for (p = data; NULL != p; p = next) {
if (data_size < pattern_size) {
p = NULL;
break;
}
if (0 == memcmp(p, pattern, pattern_size)) {
break;
}
next = memchr(&p[1], pat[0], data_size - 1);
data_size -= next - p;
}
return (void *) p;
}
--
Christian