Date: Sun, 9 Jul 2006 21:36:23 GMT From: Intron <intron@intron.ac> To: freebsd-gnats-submit@FreeBSD.org Subject: kern/99979: Get Ready for Kernel Module in C++ Message-ID: <200607092136.k69LaNDX055391@www.freebsd.org> Resent-Message-ID: <200607092140.k69LeHen000985@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 99979 >Category: kern >Synopsis: Get Ready for Kernel Module in C++ >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sun Jul 09 21:40:17 GMT 2006 >Closed-Date: >Last-Modified: >Originator: Intron >Release: 7.0-CURRENT >Organization: China >Environment: 7.0-CURRENT, Intel Celeron 1.7GHz >Description: I would write my kernel module in C++, just like IOKit of OpenDarwin. Thus, all conflicts against C++ in current FreeBSD kernel source must be swept out firstly. Here, I submit patches for _null.h, libkern.h and systm.h in /sys/sys/. 1. _null.h.diff: Now C++ code may also appear inside kernel source. 2. libkern.h.diff: C++ prohibits undeclared incompatible cast. 3. systm.h.diff: The word "new" is a perserved word of C++. >How-To-Repeat: >Fix: --- _null.h.orig Mon Jul 10 05:13:36 2006 +++ _null.h Mon Jul 10 04:58:08 2006 @@ -23,12 +23,12 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: /repoman/r/ncvs/src/sys/sys/_null.h,v 1.7 2005/01/07 02:29:23 imp Exp $ + * $FreeBSD: src/sys/sys/_null.h,v 1.7 2005/01/07 02:29:23 imp Exp $ */ #ifndef NULL -#if defined(_KERNEL) || !defined(__cplusplus) +#if defined(_KERNEL) && !defined(__cplusplus) #define NULL ((void *)0) #else #if defined(__LP64__) @@ -36,6 +36,6 @@ #else #define NULL 0 #endif /* __LP64__ */ -#endif /* _KERNEL || !__cplusplus */ +#endif /* _KERNEL && !__cplusplus */ #endif ----------------------------------------------------------------------------- --- libkern.h.orig Mon Jul 10 05:15:46 2006 +++ libkern.h Mon Jul 10 04:09:36 2006 @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * @(#)libkern.h 8.1 (Berkeley) 6/10/93 - * $FreeBSD: /repoman/r/ncvs/src/sys/sys/libkern.h,v 1.52 2005/10/06 19:06:07 pjd Exp $ + * $FreeBSD: src/sys/sys/libkern.h,v 1.52 2005/10/06 19:06:07 pjd Exp $ */ #ifndef _SYS_LIBKERN_H_ @@ -115,7 +115,7 @@ static __inline uint32_t crc32_raw(const void *buf, size_t size, uint32_t crc) { - const uint8_t *p = buf; + const uint8_t *p = (const uint8_t *) buf; while (size--) crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8); ----------------------------------------------------------------------------- --- systm.h.orig Mon Jul 10 05:17:29 2006 +++ systm.h Mon Jul 10 04:07:15 2006 @@ -32,7 +32,7 @@ * SUCH DAMAGE. * * @(#)systm.h 8.7 (Berkeley) 3/29/95 - * $FreeBSD: /repoman/r/ncvs/src/sys/sys/systm.h,v 1.240 2006/02/11 09:33:07 phk Exp $ + * $FreeBSD: src/sys/sys/systm.h,v 1.240 2006/02/11 09:33:07 phk Exp $ */ #ifndef _SYS_SYSTM_H_ @@ -203,7 +203,7 @@ int suword16(void *base, int word); int suword32(void *base, int32_t word); int suword64(void *base, int64_t word); -intptr_t casuptr(intptr_t *p, intptr_t old, intptr_t new); +intptr_t casuptr(intptr_t *p, intptr_t old, intptr_t _new); void realitexpire(void *); >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200607092136.k69LaNDX055391>