Move popcount et al to src/common and add popcount32/popcount64.
Requested by rmind@. MD should now override popcount32/popcount64 and provide the aliases as fitting.
This commit is contained in:
parent
e593aba25a
commit
0578c2ad0f
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: popcount.c,v 1.1 2009/07/21 13:18:44 joerg Exp $ */
|
/* $NetBSD: popcount32.c,v 1.1 2009/07/21 14:55:32 joerg Exp $ */
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2009 The NetBSD Foundation, Inc.
|
* Copyright (c) 2009 The NetBSD Foundation, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
@ -32,13 +32,12 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__RCSID("$NetBSD: popcount.c,v 1.1 2009/07/21 13:18:44 joerg Exp $");
|
__RCSID("$NetBSD: popcount32.c,v 1.1 2009/07/21 14:55:32 joerg Exp $");
|
||||||
|
|
||||||
#include <limits.h>
|
#if !defined(_KERNEL) && !defined(_STANDALONE)
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
|
#else
|
||||||
#if UINT_MAX > 0xffffffffUL
|
#include <lib/libkern/libkern.h>
|
||||||
#error "Unsupported architecture"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -50,13 +49,13 @@ __RCSID("$NetBSD: popcount.c,v 1.1 2009/07/21 13:18:44 joerg Exp $");
|
||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned int
|
unsigned int
|
||||||
popcount(unsigned int v)
|
popcount32(uint32_t v)
|
||||||
{
|
{
|
||||||
unsigned int c;
|
unsigned int c;
|
||||||
|
|
||||||
v = v - ((v >> 1) & 0x55555555U);
|
v = v - ((v >> 1) & 0x55555555U);
|
||||||
v = (v & 0x33333333U) + ((v >> 2) & 0x33333333U);
|
v = (v & 0x33333333U) + ((v >> 2) & 0x33333333U);
|
||||||
v = ((v + (v >> 4)) & 0x0f0f0f0fU;
|
v = (v + (v >> 4)) & 0x0f0f0f0fU;
|
||||||
c = (v * 0x01010101U) >> 24;
|
c = (v * 0x01010101U) >> 24;
|
||||||
/*
|
/*
|
||||||
* v = (v >> 16) + v;
|
* v = (v >> 16) + v;
|
||||||
|
@ -66,3 +65,11 @@ popcount(unsigned int v)
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if UINT_MAX == 0xffffffffUL
|
||||||
|
__strong_alias(popcount, popcount32);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ULONG_MAX == 0xffffffffU
|
||||||
|
__strong_alias(popcountl, popcount32);
|
||||||
|
#endif
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: popcountll.c,v 1.1 2009/07/21 13:18:44 joerg Exp $ */
|
/* $NetBSD: popcount64.c,v 1.1 2009/07/21 14:55:32 joerg Exp $ */
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2009 The NetBSD Foundation, Inc.
|
* Copyright (c) 2009 The NetBSD Foundation, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
@ -32,31 +32,33 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__RCSID("$NetBSD: popcountll.c,v 1.1 2009/07/21 13:18:44 joerg Exp $");
|
__RCSID("$NetBSD: popcount64.c,v 1.1 2009/07/21 14:55:32 joerg Exp $");
|
||||||
|
|
||||||
|
#if !defined(_KERNEL) && !defined(_STANDALONE)
|
||||||
|
#include <limits.h>
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
|
#else
|
||||||
#if ULONGLONG_MAX > 0xffffffffffffffffULL
|
#include <lib/libkern/libkern.h>
|
||||||
#error "Unsupported architecture"
|
#include <machine/limits.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If unsigned long long is larger than size_t, the follow assumes that
|
* If uint64_t is larger than size_t, the follow assumes that
|
||||||
* splitting into 32bit halfes is faster.
|
* splitting into 32bit halfes is faster.
|
||||||
*
|
*
|
||||||
* The native pocountll version is based on the same ideas as popcount(3),
|
* The native pocount64 version is based on the same ideas as popcount64(3),
|
||||||
* see popcount.c for comments.
|
* see popcount64.c for comments.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if ULONGLONG_MAX > SIZE_MAX
|
#if SIZE_MAX < 0xffffffffffffffffULL
|
||||||
unsigned int
|
unsigned int
|
||||||
popcountll(unsigned long long v)
|
popcount64(uint64_t v)
|
||||||
{
|
{
|
||||||
return popcount(v >> 32) + popcount(v & 0xffffffffU);
|
return popcount32(v >> 32) + popcount32(v & 0xffffffffU);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
unsigned int
|
unsigned int
|
||||||
popcountll(unsigned long long v)
|
popcount64(uint64_t v)
|
||||||
{
|
{
|
||||||
unsigned int c;
|
unsigned int c;
|
||||||
|
|
||||||
|
@ -68,3 +70,12 @@ popcountll(unsigned long long v)
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ULONG_MAX == 0xffffffffffffffffULL
|
||||||
|
__strong_alias(popcountl, popcount64);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ULLONG_MAX == 0xffffffffffffffffULL
|
||||||
|
__strong_alias(popcountll, popcount64);
|
||||||
|
#endif
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $NetBSD: mi,v 1.1286 2009/07/21 14:18:50 njoly Exp $
|
# $NetBSD: mi,v 1.1287 2009/07/21 14:55:32 joerg Exp $
|
||||||
#
|
#
|
||||||
# Note: don't delete entries from here - mark them as "obsolete" instead.
|
# Note: don't delete entries from here - mark them as "obsolete" instead.
|
||||||
#
|
#
|
||||||
|
@ -6946,6 +6946,8 @@
|
||||||
./usr/share/man/cat3/popcount.0 comp-c-catman .cat
|
./usr/share/man/cat3/popcount.0 comp-c-catman .cat
|
||||||
./usr/share/man/cat3/popcountl.0 comp-c-catman .cat
|
./usr/share/man/cat3/popcountl.0 comp-c-catman .cat
|
||||||
./usr/share/man/cat3/popcountll.0 comp-c-catman .cat
|
./usr/share/man/cat3/popcountll.0 comp-c-catman .cat
|
||||||
|
./usr/share/man/cat3/popcount32.0 comp-c-catman .cat
|
||||||
|
./usr/share/man/cat3/popcount64.0 comp-c-catman .cat
|
||||||
./usr/share/man/cat3/popen.0 comp-c-catman .cat
|
./usr/share/man/cat3/popen.0 comp-c-catman .cat
|
||||||
./usr/share/man/cat3/pos_form_cursor.0 comp-c-catman .cat
|
./usr/share/man/cat3/pos_form_cursor.0 comp-c-catman .cat
|
||||||
./usr/share/man/cat3/posix_memalign.0 comp-c-catman .cat
|
./usr/share/man/cat3/posix_memalign.0 comp-c-catman .cat
|
||||||
|
@ -12406,6 +12408,8 @@
|
||||||
./usr/share/man/html3/popcount.html comp-c-htmlman html
|
./usr/share/man/html3/popcount.html comp-c-htmlman html
|
||||||
./usr/share/man/html3/popcountl.html comp-c-htmlman html
|
./usr/share/man/html3/popcountl.html comp-c-htmlman html
|
||||||
./usr/share/man/html3/popcountll.html comp-c-htmlman html
|
./usr/share/man/html3/popcountll.html comp-c-htmlman html
|
||||||
|
./usr/share/man/html3/popcount32.html comp-c-htmlman html
|
||||||
|
./usr/share/man/html3/popcount64.html comp-c-htmlman html
|
||||||
./usr/share/man/html3/popen.html comp-c-htmlman html
|
./usr/share/man/html3/popen.html comp-c-htmlman html
|
||||||
./usr/share/man/html3/pos_form_cursor.html comp-c-htmlman html
|
./usr/share/man/html3/pos_form_cursor.html comp-c-htmlman html
|
||||||
./usr/share/man/html3/posix_memalign.html comp-c-htmlman html
|
./usr/share/man/html3/posix_memalign.html comp-c-htmlman html
|
||||||
|
@ -17860,6 +17864,8 @@
|
||||||
./usr/share/man/man3/popcount.3 comp-c-man .man
|
./usr/share/man/man3/popcount.3 comp-c-man .man
|
||||||
./usr/share/man/man3/popcountl.3 comp-c-man .man
|
./usr/share/man/man3/popcountl.3 comp-c-man .man
|
||||||
./usr/share/man/man3/popcountll.3 comp-c-man .man
|
./usr/share/man/man3/popcountll.3 comp-c-man .man
|
||||||
|
./usr/share/man/man3/popcount32.3 comp-c-man .man
|
||||||
|
./usr/share/man/man3/popcount64.3 comp-c-man .man
|
||||||
./usr/share/man/man3/popen.3 comp-c-man .man
|
./usr/share/man/man3/popen.3 comp-c-man .man
|
||||||
./usr/share/man/man3/pos_form_cursor.3 comp-c-man .man
|
./usr/share/man/man3/pos_form_cursor.3 comp-c-man .man
|
||||||
./usr/share/man/man3/posix_memalign.3 comp-c-man .man
|
./usr/share/man/man3/posix_memalign.3 comp-c-man .man
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: strings.h,v 1.14 2009/07/21 13:18:43 joerg Exp $ */
|
/* $NetBSD: strings.h,v 1.15 2009/07/21 14:55:33 joerg Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
* Copyright (c) 1998 The NetBSD Foundation, Inc.
|
||||||
|
@ -46,6 +46,8 @@ typedef _BSD_SIZE_T_ size_t;
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
|
|
||||||
|
#include <sys/inttypes.h>
|
||||||
|
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
int bcmp(const void *, const void *, size_t);
|
int bcmp(const void *, const void *, size_t);
|
||||||
void bcopy(const void *, void *, size_t);
|
void bcopy(const void *, void *, size_t);
|
||||||
|
@ -55,6 +57,8 @@ char *index(const char *, int);
|
||||||
unsigned int popcount(unsigned int) __constfunc;
|
unsigned int popcount(unsigned int) __constfunc;
|
||||||
unsigned int popcountl(unsigned long) __constfunc;
|
unsigned int popcountl(unsigned long) __constfunc;
|
||||||
unsigned int popcountll(unsigned long long) __constfunc;
|
unsigned int popcountll(unsigned long long) __constfunc;
|
||||||
|
unsigned int popcount32(uint32_t) __constfunc;
|
||||||
|
unsigned int popcount64(uint64_t) __constfunc;
|
||||||
char *rindex(const char *, int);
|
char *rindex(const char *, int);
|
||||||
int strcasecmp(const char *, const char *);
|
int strcasecmp(const char *, const char *);
|
||||||
int strncasecmp(const char *, const char *, size_t);
|
int strncasecmp(const char *, const char *, size_t);
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# from: @(#)Makefile.inc 8.1 (Berkeley) 6/4/93
|
# from: @(#)Makefile.inc 8.1 (Berkeley) 6/4/93
|
||||||
# $NetBSD: Makefile.inc,v 1.73 2009/07/21 13:18:43 joerg Exp $
|
# $NetBSD: Makefile.inc,v 1.74 2009/07/21 14:55:33 joerg Exp $
|
||||||
|
|
||||||
# string sources
|
# string sources
|
||||||
.PATH: ${ARCHDIR}/string ${.CURDIR}/string
|
.PATH: ${ARCHDIR}/string ${.CURDIR}/string
|
||||||
|
|
||||||
SRCS+= bm.c popcountl.c stpcpy.c stpncpy.c \
|
SRCS+= bm.c stpcpy.c stpncpy.c \
|
||||||
strcasecmp.c strncasecmp.c strcasestr.c strcoll.c strdup.c \
|
strcasecmp.c strncasecmp.c strcasestr.c strcoll.c strdup.c \
|
||||||
strerror.c strlcat.c strlcpy.c strnlen.c \
|
strerror.c strlcat.c strlcpy.c strnlen.c \
|
||||||
strmode.c strsignal.c strtok.c \
|
strmode.c strsignal.c strtok.c \
|
||||||
|
@ -55,11 +55,11 @@ SRCS+= strchr.c
|
||||||
.if empty(SRCS:Mstrrchr.S)
|
.if empty(SRCS:Mstrrchr.S)
|
||||||
SRCS+= strrchr.c
|
SRCS+= strrchr.c
|
||||||
.endif
|
.endif
|
||||||
.if empty(SRCS:Mpopcount.S)
|
.if empty(SRCS:Mpopcount32.S)
|
||||||
SRCS+= popcount.c
|
SRCS+= popcount32.c
|
||||||
.endif
|
.endif
|
||||||
.if empty(SRCS:Mpopcountll.S)
|
.if empty(SRCS:Mpopcount64.S)
|
||||||
SRCS+= popcountll.c
|
SRCS+= popcount64.c
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
MAN+= bm.3 bcmp.3 bcopy.3 bstring.3 bzero.3 ffs.3 index.3 \
|
MAN+= bm.3 bcmp.3 bcopy.3 bstring.3 bzero.3 ffs.3 index.3 \
|
||||||
|
@ -74,6 +74,8 @@ MAN+= bm.3 bcmp.3 bcopy.3 bstring.3 bzero.3 ffs.3 index.3 \
|
||||||
MLINKS+=bm.3 bm_comp.3 bm.3 bm_exec.3 bm.3 bm_free.3
|
MLINKS+=bm.3 bm_comp.3 bm.3 bm_exec.3 bm.3 bm_free.3
|
||||||
MLINKS+=popcount.3 popcountl.3
|
MLINKS+=popcount.3 popcountl.3
|
||||||
MLINKS+=popcount.3 popcountll.3
|
MLINKS+=popcount.3 popcountll.3
|
||||||
|
MLINKS+=popcount.3 popcount32.3
|
||||||
|
MLINKS+=popcount.3 popcount64.3
|
||||||
MLINKS+=strcasecmp.3 strncasecmp.3
|
MLINKS+=strcasecmp.3 strncasecmp.3
|
||||||
MLINKS+=strcat.3 strncat.3
|
MLINKS+=strcat.3 strncat.3
|
||||||
MLINKS+=strcmp.3 strncmp.3
|
MLINKS+=strcmp.3 strncmp.3
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.\" $NetBSD: popcount.3,v 1.2 2009/07/21 13:21:41 wiz Exp $
|
.\" $NetBSD: popcount.3,v 1.3 2009/07/21 14:55:33 joerg Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 2009 The NetBSD Foundation, Inc.
|
.\" Copyright (c) 2009 The NetBSD Foundation, Inc.
|
||||||
.\" All rights reserved.
|
.\" All rights reserved.
|
||||||
|
@ -33,7 +33,9 @@
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
.Nm popcount ,
|
.Nm popcount ,
|
||||||
.Nm popcountl ,
|
.Nm popcountl ,
|
||||||
.Nm popcountll
|
.Nm popcountll ,
|
||||||
|
.Nm popcount32 ,
|
||||||
|
.Nm popcount64
|
||||||
.Nd count number of bits set in a bit string
|
.Nd count number of bits set in a bit string
|
||||||
.Sh LIBRARY
|
.Sh LIBRARY
|
||||||
.Lb libc
|
.Lb libc
|
||||||
|
@ -45,6 +47,10 @@
|
||||||
.Fn popcountl "unsigned long value"
|
.Fn popcountl "unsigned long value"
|
||||||
.Ft unsigned int
|
.Ft unsigned int
|
||||||
.Fn popcountll "unsigned long long value"
|
.Fn popcountll "unsigned long long value"
|
||||||
|
.Ft unsigned int
|
||||||
|
.Fn popcount32 "uint32_t value"
|
||||||
|
.Ft unsigned int
|
||||||
|
.Fn popcount64 "uint64_t value"
|
||||||
.Sh DESCRIPTION
|
.Sh DESCRIPTION
|
||||||
The
|
The
|
||||||
.Nm
|
.Nm
|
||||||
|
@ -56,7 +62,9 @@ functions returns the number of bits set in
|
||||||
The
|
The
|
||||||
.Fn popcount ,
|
.Fn popcount ,
|
||||||
.Fn popcountl ,
|
.Fn popcountl ,
|
||||||
|
.Fn popcountll ,
|
||||||
|
.Fn popcount32
|
||||||
and
|
and
|
||||||
.Fn popcountll
|
.Fn popcount64
|
||||||
functions appeared in
|
functions appeared in
|
||||||
.Nx 6.0 .
|
.Nx 6.0 .
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
/* $NetBSD: popcountl.c,v 1.1 2009/07/21 13:18:44 joerg Exp $ */
|
|
||||||
/*-
|
|
||||||
* Copyright (c) 2009 The NetBSD Foundation, Inc.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This code is derived from software contributed to The NetBSD Foundation
|
|
||||||
* by Joerg Sonnenberger.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in
|
|
||||||
* the documentation and/or other materials provided with the
|
|
||||||
* distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
||||||
* COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
||||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
||||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
* SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
|
||||||
__RCSID("$NetBSD: popcountl.c,v 1.1 2009/07/21 13:18:44 joerg Exp $");
|
|
||||||
|
|
||||||
#include <limits.h>
|
|
||||||
#include <strings.h>
|
|
||||||
|
|
||||||
#if ULONG_MAX == UINT_MAX
|
|
||||||
__strong_alias(popcountl, popcount);
|
|
||||||
#elif ULONG_MAX == ULLONG_MAX
|
|
||||||
__strong_alias(popcountll, popcount);
|
|
||||||
#else
|
|
||||||
#error "Unsupporting architecture"
|
|
||||||
#endif
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $NetBSD: Makefile.libkern,v 1.2 2009/03/25 01:26:13 darran Exp $
|
# $NetBSD: Makefile.libkern,v 1.3 2009/07/21 14:55:33 joerg Exp $
|
||||||
|
|
||||||
#
|
#
|
||||||
# Variable definitions for libkern.
|
# Variable definitions for libkern.
|
||||||
|
@ -86,3 +86,13 @@ SRCS+= strchr.c
|
||||||
.if empty(SRCS:Mstrrchr.S)
|
.if empty(SRCS:Mstrrchr.S)
|
||||||
SRCS+= strrchr.c
|
SRCS+= strrchr.c
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
# if no machine specific popcount32(3), build generic version
|
||||||
|
.if empty(SRCS:Mpopcount32.S)
|
||||||
|
SRCS+= popcount32.c
|
||||||
|
.endif
|
||||||
|
|
||||||
|
# if no machine specific popcount64(3), build generic version
|
||||||
|
.if empty(SRCS:Mpopcount64.S)
|
||||||
|
SRCS+= popcount64.c
|
||||||
|
.endif
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: libkern.h,v 1.91 2009/05/13 02:50:32 pgoyette Exp $ */
|
/* $NetBSD: libkern.h,v 1.92 2009/07/21 14:55:33 joerg Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1992, 1993
|
* Copyright (c) 1992, 1993
|
||||||
|
@ -339,4 +339,9 @@ int snprintb_m(char *, size_t, const char *, uint64_t, size_t);
|
||||||
int kheapsort(void *, size_t, size_t, int (*)(const void *, const void *),
|
int kheapsort(void *, size_t, size_t, int (*)(const void *, const void *),
|
||||||
void *);
|
void *);
|
||||||
uint32_t crc32(uint32_t, const uint8_t *, size_t);
|
uint32_t crc32(uint32_t, const uint8_t *, size_t);
|
||||||
|
unsigned int popcount(unsigned int) __constfunc;
|
||||||
|
unsigned int popcountl(unsigned long) __constfunc;
|
||||||
|
unsigned int popcountll(unsigned long long) __constfunc;
|
||||||
|
unsigned int popcount32(uint32_t) __constfunc;
|
||||||
|
unsigned int popcount64(uint64_t) __constfunc;
|
||||||
#endif /* !_LIB_LIBKERN_LIBKERN_H_ */
|
#endif /* !_LIB_LIBKERN_LIBKERN_H_ */
|
||||||
|
|
Loading…
Reference in New Issue