Date: Mon, 17 Jun 2019 19:49:09 +0000 (UTC) From: Xin LI <delphij@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r349151 - in head: lib/libufs stand/libsa sys/conf sys/dev/iscsi sys/dev/iscsi_initiator sys/dev/liquidio sys/dev/usb/net sys/fs/ext2fs sys/fs/nandfs sys/geom/part sys/geom/raid sys/ker... Message-ID: <201906171949.x5HJn9Ed091108@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: delphij Date: Mon Jun 17 19:49:08 2019 New Revision: 349151 URL: https://svnweb.freebsd.org/changeset/base/349151 Log: Separate kernel crc32() implementation to its own header (gsb_crc32.h) and rename the source to gsb_crc32.c. This is a prerequisite of unifying kernel zlib instances. PR: 229763 Submitted by: Yoshihiro Ota <ota at j.email.ne.jp> Differential Revision: https://reviews.freebsd.org/D20193 Added: head/sys/libkern/gsb_crc32.c - copied, changed from r349150, head/sys/libkern/crc32.c head/sys/sys/gsb_crc32.h (contents, props changed) Deleted: head/sys/libkern/crc32.c Modified: head/lib/libufs/Makefile head/stand/libsa/crc32_libkern.c head/sys/conf/files head/sys/dev/iscsi/icl_soft.c head/sys/dev/iscsi_initiator/isc_subr.c head/sys/dev/liquidio/lio_bsd.h head/sys/dev/usb/net/if_cdce.c head/sys/fs/ext2fs/ext2_csum.c head/sys/fs/nandfs/nandfs_segment.c head/sys/fs/nandfs/nandfs_subr.c head/sys/fs/nandfs/nandfs_vfsops.c head/sys/geom/part/g_part_bsd64.c head/sys/geom/part/g_part_gpt.c head/sys/geom/raid/md_ddf.c head/sys/kern/subr_compressor.c head/sys/libkern/x86/crc32_sse42.c head/sys/netinet/libalias/alias_sctp.c head/sys/netinet/sctp_crc32.c head/sys/netpfil/pf/pf.c head/sys/sys/libkern.h head/sys/sys/param.h head/sys/ufs/ffs/ffs_alloc.c head/sys/ufs/ffs/ffs_snapshot.c head/sys/ufs/ffs/ffs_subr.c head/sys/ufs/ffs/ffs_vfsops.c head/tests/sys/kern/Makefile head/tests/sys/kern/libkern_crc32.c Modified: head/lib/libufs/Makefile ============================================================================== --- head/lib/libufs/Makefile Mon Jun 17 17:35:55 2019 (r349150) +++ head/lib/libufs/Makefile Mon Jun 17 19:49:08 2019 (r349151) @@ -5,7 +5,8 @@ LIB= ufs SHLIBDIR?= /lib SHLIB_MAJOR= 7 -SRCS= block.c cgroup.c crc32.c inode.c sblock.c type.c ffs_subr.c ffs_tables.c +SRCS= block.c cgroup.c gsb_crc32.c inode.c sblock.c type.c ffs_subr.c +SRCS+= ffs_tables.c INCS= libufs.h MAN= bread.3 cgread.3 getinode.3 libufs.3 sbread.3 ufs_disk_close.3 Modified: head/stand/libsa/crc32_libkern.c ============================================================================== --- head/stand/libsa/crc32_libkern.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/stand/libsa/crc32_libkern.c Mon Jun 17 19:49:08 2019 (r349151) @@ -1,3 +1,3 @@ /* $FreeBSD$ */ -#include "../../sys/libkern/crc32.c" +#include "../../sys/libkern/gsb_crc32.c" Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/conf/files Mon Jun 17 19:49:08 2019 (r349151) @@ -3982,9 +3982,9 @@ crypto/chacha20/chacha.c standard libkern/asprintf.c standard libkern/bcd.c standard libkern/bsearch.c standard -libkern/crc32.c standard libkern/explicit_bzero.c standard libkern/fnmatch.c standard +libkern/gsb_crc32.c standard libkern/iconv.c optional libiconv libkern/iconv_converter_if.m optional libiconv libkern/iconv_ucs.c optional libiconv Modified: head/sys/dev/iscsi/icl_soft.c ============================================================================== --- head/sys/dev/iscsi/icl_soft.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/dev/iscsi/icl_soft.c Mon Jun 17 19:49:08 2019 (r349151) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include <sys/capsicum.h> #include <sys/condvar.h> #include <sys/conf.h> +#include <sys/gsb_crc32.h> #include <sys/file.h> #include <sys/kernel.h> #include <sys/kthread.h> Modified: head/sys/dev/iscsi_initiator/isc_subr.c ============================================================================== --- head/sys/dev/iscsi_initiator/isc_subr.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/dev/iscsi_initiator/isc_subr.c Mon Jun 17 19:49:08 2019 (r349151) @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/kernel.h> #include <sys/conf.h> +#include <sys/gsb_crc32.h> #include <sys/systm.h> #include <sys/malloc.h> #include <sys/ctype.h> Modified: head/sys/dev/liquidio/lio_bsd.h ============================================================================== --- head/sys/dev/liquidio/lio_bsd.h Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/dev/liquidio/lio_bsd.h Mon Jun 17 19:49:08 2019 (r349151) @@ -36,6 +36,7 @@ #define __LIO_BSD_H__ #include <sys/param.h> +#include <sys/gsb_crc32.h> #include <sys/eventhandler.h> #include <sys/socket.h> #include <sys/kernel.h> Modified: head/sys/dev/usb/net/if_cdce.c ============================================================================== --- head/sys/dev/usb/net/if_cdce.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/dev/usb/net/if_cdce.c Mon Jun 17 19:49:08 2019 (r349151) @@ -50,7 +50,7 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); -#include <sys/param.h> +#include <sys/gsb_crc32.h> #include <sys/eventhandler.h> #include <sys/stdint.h> #include <sys/stddef.h> Modified: head/sys/fs/ext2fs/ext2_csum.c ============================================================================== --- head/sys/fs/ext2fs/ext2_csum.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/fs/ext2fs/ext2_csum.c Mon Jun 17 19:49:08 2019 (r349151) @@ -40,6 +40,7 @@ #include <sys/buf.h> #include <sys/endian.h> #include <sys/conf.h> +#include <sys/gsb_crc32.h> #include <sys/mount.h> #include <fs/ext2fs/fs.h> Modified: head/sys/fs/nandfs/nandfs_segment.c ============================================================================== --- head/sys/fs/nandfs/nandfs_segment.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/fs/nandfs/nandfs_segment.c Mon Jun 17 19:49:08 2019 (r349151) @@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/systm.h> #include <sys/conf.h> +#include <sys/gsb_crc32.h> #include <sys/kernel.h> #include <sys/lock.h> #include <sys/malloc.h> Modified: head/sys/fs/nandfs/nandfs_subr.c ============================================================================== --- head/sys/fs/nandfs/nandfs_subr.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/fs/nandfs/nandfs_subr.c Mon Jun 17 19:49:08 2019 (r349151) @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/systm.h> +#include <sys/gsb_crc32.h> #include <sys/namei.h> #include <sys/resourcevar.h> #include <sys/kernel.h> Modified: head/sys/fs/nandfs/nandfs_vfsops.c ============================================================================== --- head/sys/fs/nandfs/nandfs_vfsops.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/fs/nandfs/nandfs_vfsops.c Mon Jun 17 19:49:08 2019 (r349151) @@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/systm.h> #include <sys/fcntl.h> +#include <sys/gsb_crc32.h> #include <sys/kernel.h> #include <sys/lock.h> #include <sys/malloc.h> Modified: head/sys/geom/part/g_part_bsd64.c ============================================================================== --- head/sys/geom/part/g_part_bsd64.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/geom/part/g_part_bsd64.c Mon Jun 17 19:49:08 2019 (r349151) @@ -29,6 +29,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/bio.h> +#include <sys/gsb_crc32.h> #include <sys/disklabel.h> #include <sys/endian.h> #include <sys/gpt.h> Modified: head/sys/geom/part/g_part_gpt.c ============================================================================== --- head/sys/geom/part/g_part_gpt.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/geom/part/g_part_gpt.c Mon Jun 17 19:49:08 2019 (r349151) @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/bio.h> #include <sys/diskmbr.h> +#include <sys/gsb_crc32.h> #include <sys/endian.h> #include <sys/gpt.h> #include <sys/kernel.h> Modified: head/sys/geom/raid/md_ddf.c ============================================================================== --- head/sys/geom/raid/md_ddf.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/geom/raid/md_ddf.c Mon Jun 17 19:49:08 2019 (r349151) @@ -31,6 +31,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/bio.h> +#include <sys/gsb_crc32.h> #include <sys/endian.h> #include <sys/kernel.h> #include <sys/kobj.h> Modified: head/sys/kern/subr_compressor.c ============================================================================== --- head/sys/kern/subr_compressor.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/kern/subr_compressor.c Mon Jun 17 19:49:08 2019 (r349151) @@ -66,6 +66,7 @@ SET_DECLARE(compressors, struct compressor_methods); #ifdef GZIO +#include <sys/gsb_crc32.h> #include <sys/zutil.h> struct gz_stream { Copied and modified: head/sys/libkern/gsb_crc32.c (from r349150, head/sys/libkern/crc32.c) ============================================================================== --- head/sys/libkern/crc32.c Mon Jun 17 17:35:55 2019 (r349150, copy source) +++ head/sys/libkern/gsb_crc32.c Mon Jun 17 19:49:08 2019 (r349151) @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #ifdef _KERNEL #include <sys/libkern.h> #include <sys/systm.h> +#include <sys/gsb_crc32.h> #if defined(__amd64__) || defined(__i386__) #include <machine/md_var.h> Modified: head/sys/libkern/x86/crc32_sse42.c ============================================================================== --- head/sys/libkern/x86/crc32_sse42.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/libkern/x86/crc32_sse42.c Mon Jun 17 19:49:08 2019 (r349151) @@ -29,14 +29,14 @@ __FBSDID("$FreeBSD$"); /* * This file is compiled in userspace in order to run ATF unit tests. */ -#ifdef USERSPACE_TESTING +#ifndef _KERNEL #include <stdint.h> #include <stdlib.h> #else #include <sys/param.h> -#include <sys/systm.h> #include <sys/kernel.h> #endif +#include <sys/gsb_crc32.h> static __inline uint32_t _mm_crc32_u8(uint32_t x, uint8_t y) @@ -199,7 +199,7 @@ crc32c_shift(uint32_t zeros[][256], uint32_t crc) /* Initialize tables for shifting crcs. */ static void -#ifdef USERSPACE_TESTING +#ifndef _KERNEL __attribute__((__constructor__)) #endif crc32c_init_hw(void) @@ -214,9 +214,6 @@ SYSINIT(crc32c_sse42, SI_SUB_LOCK, SI_ORDER_ANY, crc32 #endif /* Compute CRC-32C using the Intel hardware instruction. */ -#ifdef USERSPACE_TESTING -uint32_t sse42_crc32c(uint32_t, const unsigned char *, unsigned); -#endif uint32_t sse42_crc32c(uint32_t crc, const unsigned char *buf, unsigned len) { Modified: head/sys/netinet/libalias/alias_sctp.c ============================================================================== --- head/sys/netinet/libalias/alias_sctp.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/netinet/libalias/alias_sctp.c Mon Jun 17 19:49:08 2019 (r349151) @@ -75,6 +75,7 @@ #ifdef _KERNEL #include <machine/stdarg.h> #include <sys/param.h> +#include <sys/gsb_crc32.h> #include <sys/systm.h> #include <sys/kernel.h> #include <sys/module.h> Modified: head/sys/netinet/sctp_crc32.c ============================================================================== --- head/sys/netinet/sctp_crc32.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/netinet/sctp_crc32.c Mon Jun 17 19:49:08 2019 (r349151) @@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$"); #include "opt_sctp.h" +#include <sys/gsb_crc32.h> #ifdef SCTP #include <netinet/sctp_os.h> #include <netinet/sctp.h> Modified: head/sys/netpfil/pf/pf.c ============================================================================== --- head/sys/netpfil/pf/pf.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/netpfil/pf/pf.c Mon Jun 17 19:49:08 2019 (r349151) @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/bus.h> #include <sys/endian.h> +#include <sys/gsb_crc32.h> #include <sys/hash.h> #include <sys/interrupt.h> #include <sys/kernel.h> Added: head/sys/sys/gsb_crc32.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/sys/gsb_crc32.h Mon Jun 17 19:49:08 2019 (r349151) @@ -0,0 +1,47 @@ +/*- + * COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or + * code or tables extracted from it, as desired without restriction. + * + * $FreeBSD$ + */ + +#ifndef _SYS_GSB_CRC32_H_ +#define _SYS_GSB_CRC32_H_ + +#include <sys/types.h> + +#ifdef _KERNEL + +extern const uint32_t crc32_tab[]; + +static __inline uint32_t +crc32_raw(const void *buf, size_t size, uint32_t crc) +{ + const uint8_t *p = (const uint8_t *)buf; + + while (size--) + crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8); + return (crc); +} + +static __inline uint32_t +crc32(const void *buf, size_t size) +{ + uint32_t crc; + + crc = crc32_raw(buf, size, ~0U); + return (crc ^ ~0U); +} + +uint32_t calculate_crc32c(uint32_t crc32c, const unsigned char *buffer, + unsigned int length); +#endif + +#if defined(__amd64__) || defined(__i386__) +uint32_t sse42_crc32c(uint32_t, const unsigned char *, unsigned); +#endif +#if defined(__aarch64__) +uint32_t armv8_crc32c(uint32_t, const unsigned char *, unsigned int); +#endif + +#endif /* !_SYS_GSB_CRC32_H_ */ Modified: head/sys/sys/libkern.h ============================================================================== --- head/sys/sys/libkern.h Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/sys/libkern.h Mon Jun 17 19:49:08 2019 (r349151) @@ -190,39 +190,6 @@ size_t strspn(const char *, const char *); char *strstr(const char *, const char *); int strvalid(const char *, size_t); -extern const uint32_t crc32_tab[]; - -static __inline uint32_t -crc32_raw(const void *buf, size_t size, uint32_t crc) -{ - const uint8_t *p = (const uint8_t *)buf; - - while (size--) - crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8); - return (crc); -} - -static __inline uint32_t -crc32(const void *buf, size_t size) -{ - uint32_t crc; - - crc = crc32_raw(buf, size, ~0U); - return (crc ^ ~0U); -} - -uint32_t -calculate_crc32c(uint32_t crc32c, const unsigned char *buffer, - unsigned int length); -#ifdef _KERNEL -#if defined(__amd64__) || defined(__i386__) -uint32_t sse42_crc32c(uint32_t, const unsigned char *, unsigned); -#endif -#if defined(__aarch64__) -uint32_t armv8_crc32c(uint32_t, const unsigned char *, unsigned int); -#endif -#endif - static __inline char * index(const char *p, int ch) { Modified: head/sys/sys/param.h ============================================================================== --- head/sys/sys/param.h Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/sys/param.h Mon Jun 17 19:49:08 2019 (r349151) @@ -60,7 +60,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 1300031 /* Master, propagated to newvers */ +#define __FreeBSD_version 1300032 /* Master, propagated to newvers */ /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, Modified: head/sys/ufs/ffs/ffs_alloc.c ============================================================================== --- head/sys/ufs/ffs/ffs_alloc.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/ufs/ffs/ffs_alloc.c Mon Jun 17 19:49:08 2019 (r349151) @@ -68,6 +68,7 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/capsicum.h> +#include <sys/gsb_crc32.h> #include <sys/systm.h> #include <sys/bio.h> #include <sys/buf.h> Modified: head/sys/ufs/ffs/ffs_snapshot.c ============================================================================== --- head/sys/ufs/ffs/ffs_snapshot.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/ufs/ffs/ffs_snapshot.c Mon Jun 17 19:49:08 2019 (r349151) @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); #include <sys/kernel.h> #include <sys/systm.h> #include <sys/conf.h> +#include <sys/gsb_crc32.h> #include <sys/bio.h> #include <sys/buf.h> #include <sys/fcntl.h> Modified: head/sys/ufs/ffs/ffs_subr.c ============================================================================== --- head/sys/ufs/ffs/ffs_subr.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/ufs/ffs/ffs_subr.c Mon Jun 17 19:49:08 2019 (r349151) @@ -59,6 +59,7 @@ struct malloc_type; #else /* _KERNEL */ #include <sys/systm.h> +#include <sys/gsb_crc32.h> #include <sys/lock.h> #include <sys/malloc.h> #include <sys/mount.h> Modified: head/sys/ufs/ffs/ffs_vfsops.c ============================================================================== --- head/sys/ufs/ffs/ffs_vfsops.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/sys/ufs/ffs/ffs_vfsops.c Mon Jun 17 19:49:08 2019 (r349151) @@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include "opt_ddb.h" #include <sys/param.h> +#include <sys/gsb_crc32.h> #include <sys/systm.h> #include <sys/namei.h> #include <sys/priv.h> Modified: head/tests/sys/kern/Makefile ============================================================================== --- head/tests/sys/kern/Makefile Mon Jun 17 17:35:55 2019 (r349150) +++ head/tests/sys/kern/Makefile Mon Jun 17 19:49:08 2019 (r349151) @@ -46,7 +46,6 @@ LIBADD.mqueue_test+= rt ${MACHINE_ARCH} == "i386" || \ ${MACHINE_ARCH} == "aarch64" ATF_TESTS_C+= libkern_crc32 -CFLAGS.libkern_crc32+= -DUSERSPACE_TESTING .if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" LDADD.libkern_crc32+= ${SRCTOP}/sys/libkern/x86/crc32_sse42.c .else Modified: head/tests/sys/kern/libkern_crc32.c ============================================================================== --- head/tests/sys/kern/libkern_crc32.c Mon Jun 17 17:35:55 2019 (r349150) +++ head/tests/sys/kern/libkern_crc32.c Mon Jun 17 19:49:08 2019 (r349151) @@ -27,16 +27,13 @@ */ #include <sys/param.h> +#include <sys/gsb_crc32.h> #include <stdint.h> #include <atf-c.h> -#if defined(__amd64__) || defined(__i386__) -extern uint32_t sse42_crc32c(uint32_t, const unsigned char *, unsigned); -#elif defined(__aarch64__) -extern uint32_t armv8_crc32c(uint32_t, const unsigned char *, unsigned); -#else +#if !defined(__amd64__) && !defined(__i386__) && !defined(__aarch64__) #error These tests are not supported on this platform #endif
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201906171949.x5HJn9Ed091108>