[v2] devtools: spell check
Checks
Commit Message
A spell check script that checks for spelling errors in modified .rst files
using git. There is also an optional flag to have the script check the entire
doc directory for errors. The dictionary is used for word exceptions, and the
regex file will exclude any regex patterns supplied on each line.
Errors will be logged and printed to console, and by default the log will be
stored in devtools. The output directory can be modified with a flag.
The script can be executed from anywhere within the dpdk repo.
Signed-off-by: Henry Nadeau <hnadeau@iol.unh.edu>
---
devtools/spell_check.sh | 202 +++
devtools/spell_check_dictionary.txt | 2154 +++++++++++++++++++++++++++
devtools/spell_check_regex.txt | 2 +
3 files changed, 2358 insertions(+)
create mode 100755 devtools/spell_check.sh
create mode 100644 devtools/spell_check_dictionary.txt
create mode 100644 devtools/spell_check_regex.txt
Comments
On Fri, 12 Nov 2021 13:14:45 -0500
Henry Nadeau <hnadeau@iol.unh.edu> wrote:
> +# Compares diff between current branch and it's remote counterpart
> +if [ ! $all_check = 'true' ]; then
> + git diff "$branch" origin/"$remote_branch" --name-only |
> + grep ".*\.rst" |
> + # run the spellcheck function over each file in parallel, appending
> + # misspellings to the output file
> + parallel -j "$(nproc)" spellcheck_file {} "$allowed_words" "$dpdk_dir" \
> + "$regex_pattern" >> "$output"
> + else
> + cd "$dpdk_dir"
> + find . -name "*.rst" -type f | parallel -j "$(nproc)" spellcheck_file {} \
> + "$allowed_words" "$dpdk_dir" "$regex_pattern" >>"$output"
> +fi
> +
> +
> +cat "$output"
> +
> +# remove empty lines in the output
> +sed -i '/^$/d' "$output"
> +
> +# Errors can be counted by counting the number of lines in the output
> +errors="$(wc -l "$output" | cut -d ' ' -f 1)"
> +printf "Errors found: %d\n" "$errors" | tee -a "$output"
> +
> +# Make the exit code the number of errors
> +exit "$errors"
Seems like this is adding alot of git stuff to what could just be
a tool to report the spelling errors in the current branch.
new file mode 100755
@@ -0,0 +1,202 @@
+#!/bin/bash
+
+dpdk_dir=$(git rev-parse --show-toplevel)
+if [ -z "$dpdk_dir" ]; then
+ echo "Please execute this script from within a git repo"
+ exit 1
+fi
+
+set -e
+allowed_words='' # path to allowed words file
+all_check='false' # optional flag to check all documentation
+verbose_logging='false'
+branch=$(git rev-parse --abbrev-ref HEAD) # Gets current working branch
+regex_dir=''
+
+while test $# -gt 0; do
+ case "$1" in
+ -h | --help)
+ echo "Spell Check"
+ echo " "
+ echo "spell_check [options] [arguments]"
+ echo " "
+ echo "options:"
+ echo "-h, --help
+ Show shows list of flags and usages."
+ echo "-a, --all-doc
+ Specify if all documentation should be checked."
+ echo "-b
+ Specify a different branch to be checked against."
+ echo "-d
+ Specify a different dictionary to be used by aspell."
+ echo "-o, --output-dir=DIR
+ Specify a directory to store output in."
+ echo "-r
+ Specify a different regex pattern file."
+ echo "-v
+ Specify verbose logging."
+ exit 0
+ ;;
+ -a | --all-doc)
+ shift
+ export all_check='true'
+ ;;
+ -b)
+ shift
+ export remote_branch=$1
+ shift
+ ;;
+ -r)
+ shift
+ export regex_dir=$1
+ shift
+ ;;
+ -d)
+ shift
+ export allowed_words=$1
+ shift
+ ;;
+ -v)
+ shift
+ echo "Verbose logging active!"
+ export verbose_logging='true'
+ ;;
+ -o)
+ shift
+ if test $# -gt 0; then
+ export output=$1
+ else
+ echo "no output dir specified"
+ exit 1
+ fi
+ shift
+ ;;
+ --output-dir*)
+ export output=$(echo $1 | sed -e 's/^[^=]*=//g')
+ shift
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+if [ "" = "$output" ]; then
+ output="$dpdk_dir/devtools/spell_check.log"
+else
+ output+=/spell_check.log
+fi
+
+if [ "" = "$regex_dir" ]; then
+ regex_dir="$dpdk_dir/devtools/spell_check_regex.txt"
+fi
+
+PKG_OK=$(which aspell)
+
+if [ $verbose_logging = 'true' ]; then
+ echo Checking for Aspell: "$PKG_OK"
+fi
+
+if [ "" = "$PKG_OK" ]; then
+ echo "Missing Required Package: Aspell"
+ exit 1
+fi
+
+PKG_OK=$(which git)
+
+if [ $verbose_logging = 'true' ]; then
+ echo Checking for Git: "$PKG_OK"
+fi
+
+if [ "" = "$PKG_OK" ]; then
+ echo "Missing Required Package: Git"
+ exit 1
+fi
+
+PKG_OK=$(which parallel)
+
+if [ $verbose_logging = 'true' ]; then
+ echo Checking for Parallel: "$PKG_OK"
+fi
+
+if [ "" = "$PKG_OK" ]; then
+ echo "Missing Required Package: Parallel"
+ exit 1
+fi
+
+# Checking if remote branch flag was set
+if [ "" = "$remote_branch" ]; then
+ remote_branch=$branch
+fi
+
+# Checking if separate dictionary was supplied, if not defaults to
+# spell_check_dictionary.txt in current dir
+if [ "" = "$allowed_words" ]; then
+ allowed_words=$dpdk_dir'/devtools/spell_check_dictionary.txt'
+fi
+
+# function to spell check a single file
+function spellcheck_file() {
+ file="$3/$1"
+ dictionary="$2"
+ sed -e "$4" "$file" | # used to simplify lines sent to aspell
+ tr -d '*' |
+ tr -d '`' |
+ aspell --lang=en --encoding=utf-8 --ignore-case \
+ --ignore-repl pipe list -d en --ignore=3 --personal="$dictionary" |
+ sed -r '/\*/d; /^\s*$/d' |
+ cut -d ' ' -f 2 |
+ sort -u |
+ sed '/International/d' |
+ grep -Z "" |
+ xargs -0 -I % grep -on "%" "$file" |
+ awk -v file="$file" -F ':' '{ printf "%s:%s %s\n", file, $1, $2 }'
+}
+
+# Build regex pattern from files
+regex_pattern="'s/(R)//; "
+while IFS= read -r line; do
+ if [[ ! $line =~ "#" ]]; then
+ regex_pattern+="s/$line/ /; "
+ fi
+done < "$regex_dir"
+regex_pattern="${regex_pattern::-1}'"
+
+if [ "'" = "$regex_pattern" ]; then
+ regex_pattern=''
+fi
+
+# Make sure output file is present and empty
+touch "$output"
+truncate -s 0 "$output"
+
+# setup so that parallel can use the function
+export -f spellcheck_file
+export SHELL="$(type -p bash)"
+
+# Compares diff between current branch and it's remote counterpart
+if [ ! $all_check = 'true' ]; then
+ git diff "$branch" origin/"$remote_branch" --name-only |
+ grep ".*\.rst" |
+ # run the spellcheck function over each file in parallel, appending
+ # misspellings to the output file
+ parallel -j "$(nproc)" spellcheck_file {} "$allowed_words" "$dpdk_dir" \
+ "$regex_pattern" >> "$output"
+ else
+ cd "$dpdk_dir"
+ find . -name "*.rst" -type f | parallel -j "$(nproc)" spellcheck_file {} \
+ "$allowed_words" "$dpdk_dir" "$regex_pattern" >>"$output"
+fi
+
+
+cat "$output"
+
+# remove empty lines in the output
+sed -i '/^$/d' "$output"
+
+# Errors can be counted by counting the number of lines in the output
+errors="$(wc -l "$output" | cut -d ' ' -f 1)"
+printf "Errors found: %d\n" "$errors" | tee -a "$output"
+
+# Make the exit code the number of errors
+exit "$errors"
new file mode 100644
@@ -0,0 +1,2154 @@
+personal_ws-1.1 en 2153
+AArch
+ABI's
+ABIs
+ACAT
+ACKs
+ACLs
+ADAT
+AEEOT
+AENQ
+AESN
+AFUs
+AIOP
+ALEF
+ALTQ
+AMDA
+APCI
+API's
+APIs
+ARKA
+ARKP
+ARMv
+ASCAT
+ASIC
+ASLR
+ASan
+AUPE
+AddressSanitizer
+AdminQ
+Agilex
+Agilio
+AltArch
+AltiVec
+Alveo
+Aquantia
+Aquantia's
+Arkville
+Arkville's
+Arria
+BBDev
+BBdev
+BCAT
+BDFs
+BMan
+BPSK
+BSPs
+BUFS
+BXNT
+Backports
+Blocklisting
+BlueField
+Broadcom
+Broadwell
+Broder
+BusA
+CAVP
+CAVS
+CBAR
+CBDMA
+CBFC
+CCAT
+CCITT
+CCed
+CDAT
+CEIL
+CFLAG
+CIDR
+CIMC
+CLIs
+CNTRS
+COMPDEV
+CPUFLAG
+CPUFreq
+CPUIdle
+CPUs
+CamelCase
+Cavium
+Cavium's
+CentOS
+Centos
+Cesnet
+Chelsio
+CollectD
+CommitID
+CompressDev
+ConnectX
+Coverity
+CryptoDev
+DALLOW
+DCBX
+DDEBUG
+DDIO
+DEINTERLEAVE
+DEINTERLEAVER
+DESTDIR
+DEVMEM
+DEVS
+DIMM
+DIMMs
+DLActive
+DLB's
+DMAdev
+DMFS
+DOCSISBPI
+DPBP
+DPBPs
+DPDK's
+DPDKVMS
+DPIO
+DPIOs
+DPMAC
+DPMCP
+DPRCs
+DRHD
+DRTE
+DSPs
+DTLB
+DVPT
+DWRR
+Dbuildtype
+Ddisable
+Deinitialising
+Denable
+DevA
+DevB
+DevC
+DevD
+DevF
+DevX
+DevxEnabled
+DevxFsRules
+Dexamples
+Dflexran
+DiffServ
+Diffie
+Dmachine
+Dmax
+Dmitry
+Dockerfile
+DomBDF
+Doption
+Dplatform
+DrvA
+DrvB
+DstMAC
+Dwerror
+EBUSY
+ECAT
+ECDSA
+ECPFs
+ECPM
+EDAT
+EEARBC
+EEXIST
+EFD's
+EINVAL
+ENAv
+ENOSPC
+ENOSYS
+ENOTSUP
+EPOLLIN
+ERANGE
+ESXi
+ETAG
+ETHPORTS
+ETQF
+ETrackId
+EVLAN
+EZchip
+Enablement
+EncryptExtIV
+EqualizationComplete
+Ericsson
+EthApp
+EtherType
+EventDev
+Extranet
+FAILOVER
+FALLTHROUGH
+FANOUT
+FCCT
+FDIRCTL
+FEXTNVM
+FFFFFFFF
+FFFFFFFFFFFFFFFFFFFFFFFF
+FIFOs
+FMan
+FPGAs
+FQID
+FRAMESIZE
+FastLinQ
+FleXRAN
+FlexRAN
+FlexSparc
+FortPark
+Fortville
+Foxville
+FpgaDev
+FrameCheckSequenceErrors
+FreeBSD
+FreeBSD's
+Freescale
+GBASE
+GCAT
+GCMVS
+GFSbox
+GGAs
+GGRP
+GGRPs
+GLINKSETTINGS
+GNinja
+GPAs
+GPGPU
+GPIO
+GPLv
+GPUs
+GRE's
+GRENAT
+GROed
+GSET
+GSO'd
+GSOed
+GTPC
+GTPU
+GTPoGRE
+GTPv
+Gbps
+HCAT
+HIFS
+HQoS
+HTSS
+HUGEFILE
+HUGETLB
+HWRM
+HWaddr
+Haswell
+HiSilicon
+HowTo
+Huawei
+HugePages
+Hugepagesize
+IANA
+ICMPv
+IFCVF's
+IGEL
+IGMP
+INTLBK
+INTx
+IOPL
+IOSF
+IOTLB
+IOVM
+IPADs
+IPHDR
+IPSec
+IPsec
+IRQs
+ITERS
+IXIA
+InfiniBand
+InifiniBand
+Inkscape
+IntN
+Intels
+Ironpond
+JITed
+KBytes
+Kaminsky
+KeySbox
+Kozlyuk
+Kunpeng
+Kunpeng's
+LDFLAG
+LEDs
+LETCAM
+LF's
+LFSR
+LIBDIR
+LIBEAL
+LINEARBUF
+LINKINFO
+LKCF
+LKML
+LLDP
+LLQv
+LLRs
+LSB's
+LSBs
+LSDK
+LTTng
+Linaro
+LineSidePort
+LiquidIO
+LnkSta
+Lpmcore
+MACSec
+MACsec
+MAIA
+MAINT
+MBUFs
+MBytes
+MDATA
+MDIO
+MEMLOCK
+MESI
+MKEY
+MMAP's
+MMIO
+MODINV
+MPLSoGRE
+MPLSoUDP
+MPMC
+MPMCF
+MPSC
+MSBs
+MSDN
+MSIx
+MSRs
+MSVC
+MTUs
+MWAIT
+Maipo
+Mellanox
+MemC
+MemCache
+MinGW
+Mitzenmacher
+Moongen
+MySpecialDev
+MySpecialDrv
+NASM
+NCSI
+NDIS
+NGIO
+NIC's
+NICs
+NICsfor
+NIST
+NNNNN
+NOFILE
+NOLIVE
+NOTREACHED
+NREGIONS
+NSDI
+NSECPERSEC
+NXP's
+NetUIO
+NetVSC
+NetXtreme
+Netcope
+Netlink
+Netmap
+Netronome's
+Niantic
+Npcap
+OFPAT
+OKTET
+OPADs
+OPAE
+OR'd
+OcteonTX
+OcteonTx
+Ootpa
+OpenCL
+OpenFabrics
+OpenFlow
+OpenSSL
+OpenWRT
+OpenWrt
+PBSIZE
+PCDs
+PCIADDR
+PCIe
+PCRE
+PCTYPES
+PF's
+PFVF
+PFVMTXSSW
+PGSIZE
+PHYREG
+PMD's
+PMDs
+POSIX
+PPPOED
+PPPOES
+PPPoE
+PPPoL
+PQoS
+PRIu
+PRNG
+PROBLEMTYPE
+PYTHONPATH
+Pankaj
+Parallelize
+Paravirtual
+Pensando
+Permop
+Pfaff
+Pipelevel
+Powerlinux
+Prepend
+QATE
+QEMU's
+QLogic
+QMan
+QNUM
+QSFP
+QinQ
+QorIQ
+QuickAssist
+QuickData
+RETA's
+RETAs
+RFCE
+RFOE
+RHEL
+RINGSIZE
+ROUNDROBIN
+RSERV
+RSMBL
+RSPCIPHY
+ReEx
+ReTa
+Readme
+Redhat
+Regexes
+Retransmit
+Rootfile
+RxQs
+RxTx
+SA's
+SADB
+SAIDX
+SATP
+SCLK
+SELINUXTYPE
+SELinux
+SFID
+SFNX
+SGBT
+SGLs
+SIGBUS
+SIGCOMM
+SIGHUP
+SIGINT
+SLAs
+SLES
+SLINKSETTINGS
+SMMU
+SMMUv
+SMTP
+SOC's
+SOCs
+SPDK
+SPDX
+SPSC
+SRAM
+SRTD
+SSET
+SSOW
+SSOWS
+SXGMII
+ScaleBricks
+SeLockMemoryPrivilege
+SecMon
+Semihalf
+Sendto
+Shumway
+Silicom
+Skylake
+SlotClk
+SmartNICs
+SoCs
+SoftNIC
+SolarCapture
+Solarflare
+SpeedStep
+StrataGX
+Subfield
+Subkey
+Subtarget
+Sunsetting
+TAGCTRL
+TCAM
+TCPHDR
+TCPv
+TDES
+TIMvf
+TIPG
+TLBs
+TLVs
+TPAUSE
+TPID's
+TSDL
+TSOed
+TSOv
+TestPMD
+TestPoint
+TestPointShared
+Testpoint
+ThunderX
+Timebase
+ToolChain
+TrErr
+TruFlow
+Twinpond
+UCSM
+UCTX
+UDPv
+UEFI
+UMWAIT
+UTRA
+Unary
+UniPHY
+Unregistration
+VADT
+VCBs
+VDAT
+VEBs
+VF's
+VFTA
+VICs
+VIRQFD
+VLANs
+VLVF
+VLXAN
+VM's
+VMBus
+VMDq
+VMware
+VPCLMULQDQ
+VRRP
+VTEP
+VTune
+VXLan
+VarText
+Varkey
+Versal
+VirtIO
+VirtQ
+Virtio's
+VxLAN
+WAITPKG
+WORKDIR
+WQEs
+WangXun
+Wangxun
+WinOF
+WinPcap
+Wmissing
+XCAT
+XGBE
+XORed
+XXCC
+XXXXXXXXXX
+Xenial
+Xeon
+Xilinx
+XtremeScale
+Yocto
+ZIPVF
+Zhou
+aQtion
+aaaa
+aarch
+abar
+abcdefgh
+abidiff
+accel
+accessor
+acked
+acking
+acks
+acpi
+activeate
+addif
+addr
+addrs
+adminq
+adptrs
+aead
+aesni
+affinitize
+affinitized
+affinitizing
+aflag
+algo
+algos
+allmulti
+allmulticast
+alloc
+allocator
+allocator's
+allocators
+allowlist
+allports
+alrt
+altivec
+amumble
+amzn
+antispoof
+apis
+argc
+args
+argv
+armv
+asan
+asym
+async
+atexit
+atmost
+atoi
+atomicNN
+atomicity
+atomics
+attr
+auth
+autoconf
+autodetected
+autogen
+autoload
+autoneg
+autonegotiation
+autotest
+autotests
+autotools
+axgbe
+babeltrace
+backend
+backends
+backplane
+backport
+backported
+backporting
+backpressure
+backquotes
+baddr
+balancer
+barcharts
+baseband
+basegraph
+basename
+bbdev
+bbdevs
+bcac
+bcast
+bcde
+bcmfs
+beefd
+benchmarking
+bflag
+binded
+binutils
+bitcnt
+bitfield
+bitfields
+bitmask
+bitmasks
+bitrate
+bitrates
+bitratestats
+bitstream
+bitwidth
+bitwidths
+bitwise
+bler
+blocklist
+blocksz
+bluefield
+bnxt
+bondingX
+bool
+bootargs
+bootindex
+boxplot
+bphy
+bpid
+bpool
+branchless
+brctl
+breakpoint
+bsize
+bufring
+bufsz
+bugfixes
+builddir
+buildroot
+buildtools
+buildtype
+builtins
+bursty
+busybox
+byname
+bytecode
+byteswap
+cBPF
+caam
+caba
+cacheline
+cack
+calc
+callee
+callfd
+calloc
+callout
+capa
+cbaf
+cbps
+ccac
+ccbbffffaa
+cdev
+cdfd
+centric
+cfgfile
+cfilter
+cflags
+cgroup
+cgroups
+chacha
+changings
+charcrypto
+chardev
+charp
+cheatsheet
+checkpatch
+checkpatches
+checksumming
+checksums
+chipset
+chipsets
+chkr
+chksum
+chlen
+chmod
+chnk
+chown
+cint
+ciphertext
+cksum
+classif
+cldemote
+clks
+cmac
+cmake
+cman
+cmdif
+cmdline
+cmds
+cmit
+cnic
+cntvct
+cnxk
+codespell
+combov
+commandline
+committer's
+comms
+compN
+comparator
+comparators
+compat
+compilervars
+compressdev
+compressdevs
+cond
+conf
+config
+configfile
+configruration
+configs
+connectx
+conntrack
+const
+contig
+contigmalloc
+contigmem
+contiguousness
+contrib
+conv
+copybreak
+coredump
+coredumpsize
+corei
+corelist
+coremask
+cperf
+cppc
+cpuX
+cpufreq
+cpuinfo
+cpumask
+cpus
+cpuset
+cputune
+cron
+crypto
+cryptodev
+cryptodev's
+cryptodevs
+cryptographic
+cryptolib
+cryptoperf
+csiostor
+cstream
+csum
+csumonly
+ctod
+ctrl
+ctrlmbuf
+cuda
+cudaStream
+currentMemory
+cvlan
+cvss
+cxgb
+cxgbe
+cxgbetool
+cxgbevf
+cxgbtool
+cyclecount
+dPacket
+daemonize
+data's
+datagram
+datagrams
+datapath
+datapaths
+dataplane
+dataroom
+datasheet
+dataunit
+dbdf
+deallocate
+deallocated
+deallocates
+deallocating
+deallocation
+debugbuild
+debugfs
+debugoptimized
+decap
+decaped
+decaps
+decapsulate
+decapsulated
+decapsulating
+decapsulation
+decomp
+decrementing
+decrypt
+decrypted
+dedent
+dedented
+defs
+degradations
+deinit
+deinitialization
+deinitialized
+denylist
+deps
+deqd
+deque
+dequeing
+dequeue
+dequeued
+dequeueing
+dequeues
+dequeuing
+dereference
+dereferenced
+dereferencing
+desc
+descs
+dest
+deterministically
+devarg
+devargs
+devbind
+devel
+develconfig
+deviceID
+deviceid
+devid
+devinfo
+devinit
+devlink
+devtools
+devtype
+devuninit
+diag
+dirname
+disaggregated
+distr
+distrib
+distro
+distros
+dlopen
+dmac
+dmadev
+dmadevs
+dmafwd
+dmar
+dmarXXX
+dmas
+dmesg
+dmidecode
+docsis
+dont
+dostuff
+downlink
+downscript
+doxy
+doxygen
+dpaa
+dpci
+dpcon
+dpdk
+dpdmai
+dpni
+dport
+dprc
+dpseci
+dptmapi
+dqud
+dracut
+driverctl
+dropless
+droppper
+drvinfo
+drwxr
+dscp
+dsts
+dtap
+dtunX
+dumpcap
+dynf
+dynfield
+dynflag
+eBPF
+eCPRI
+eMPW
+ecid
+ecmp
+ecpri
+edab
+eeprom
+eetrack
+elftools
+elif
+elts
+emulatorpin
+encap
+encaped
+encapped
+endPtr
+endian
+endianness
+endif
+enetc
+enic
+enqd
+enqueue
+enqueued
+enqueueing
+enqueues
+enqueuing
+entrancy
+entres
+entryx
+enum
+enums
+enumtype
+epoll
+errno
+essb
+eswitch
+ethdev
+ethdev's
+ethdevs
+ethertype
+ethertypes
+ethtool
+evdev
+eventdev
+eventdevs
+eventport
+eventq
+evtim
+ewma
+exdsa
+executables
+expirations
+extbuf
+extconf
+extern
+extmbuf
+extmem
+extstats
+fPIC
+facto
+failsafe
+fastpath
+fbarray
+fd's
+fdir
+fdir's
+fdirmatch
+fdirmiss
+fdisk
+fdopen
+ffadc
+ffade
+ffea
+ffff
+ffffff
+filepath
+filesystem
+filetype
+fillcrypto
+filtermask
+filtermode
+fini
+fips
+firmwares
+fixline
+flexbytes
+flexpayload
+flexran
+flib
+flowapi
+flowgen
+flowid
+flowptr
+flowttl
+flowtype
+flushtime
+fman
+fmlib
+foohead
+foreach
+formatters
+fpavf
+fpga
+fprintf
+framecnt
+framesz
+freebsd
+freqs
+frontend
+frontends
+fslmc
+fstab
+ftag
+fullbuild
+fullchk
+fullq
+func
+funcs
+fwdbuild
+fwding
+geneve
+getcpuclockid
+getopt
+getschedparam
+getspecific
+getwork
+gfni
+glibc
+globbing
+glort
+gmac
+gmake
+gnueabihf
+goto
+gpudev
+gpus
+gragment
+grehdr
+grep'ed
+groupinstall
+guarant
+gzip
+hairpinq
+hardcoded
+harq
+hdls
+helloworld
+hexmask
+hier
+highlevel
+higig
+hinic
+hisilicon
+hmac
+hostdev
+hostfwd
+hostname
+hostnet
+hotplug
+hotplugged
+hotplugging
+howto
+hpet
+hrtp
+hthresh
+htonl
+hugepage
+hugepages
+hugepagesz
+hugetlbfs
+hwcap
+hwgrp
+hwissue
+hwloc
+hyperthreading
+hyst
+iAVF
+iSCSI
+iavf
+ibadcrc
+ibadlen
+ibverbs
+ibytes
+icmp
+icmpecho
+icmpv
+idxd
+ient
+ierrors
+ietf
+iface
+ifaceX
+ifconfig
+ifcvf
+ifdef
+ifname
+ifndef
+ifpga
+ifup
+igbvf
+imcasts
+imissed
+imix
+impl
+implementers
+incrementing
+infa
+infiniband
+inflight
+inflights
+infos
+init
+initializer
+initializers
+initializion
+inlined
+inlining
+inmigrate
+inorder
+insmod
+intXX
+interleaver
+interprocedural
+intf
+intr
+intra
+intrinsics
+ints
+intx
+ioat
+ioeventfd
+iofwd
+iomem
+iommu
+ioport
+ioports
+iova
+ipackets
+ipip
+iproute
+ipsec
+irqs
+isal
+iscard
+isdigit
+isolcpus
+isonum
+iter
+ivshmem
+ixgbe
+ixgbevf
+jansson
+jhash
+jitter
+jobstats
+json
+kaleido
+kasumi
+kbytes
+kdrv
+keepalive
+keepcfg
+kenv
+keyX
+keygen
+keytag
+keywidth
+kflows
+killall
+kldload
+kldstat
+kldunload
+kmod
+kmods
+kni's
+kqueue
+kstrtoul
+kthread
+kthreads
+ktrace
+kvargs
+lacp
+latencystats
+layerscape
+lbrm
+lcore
+lcoreid
+lcores
+ldconfig
+ldflags
+ldpc
+ldpcdec
+ldpcenc
+libAArch
+libSSO
+libX
+libabigail
+libarchive
+libasan
+libatomic
+libbpf
+libc
+libcrypto
+libcryptodev
+libdpdk
+libefx
+libelf
+libeventdev
+libexecinfo
+libgcc
+libibverbs
+libisal
+libjansson
+libmemif
+libmlx
+libmusdk
+libname
+libnfb
+libnl
+libnuma
+libpcap
+libpqos
+librte
+libs
+libsze
+libtool
+libudev
+libvhost
+libvirt
+libz
+linearization
+linearize
+linearized
+linearizing
+linuxapp
+liovf
+liquidio
+literalinclude
+liveness
+lkup
+lladdr
+llvm
+lmac
+loadcfg
+loadfw
+loadu
+lockfree
+lockless
+loglevel
+loglevels
+logtype
+lookaside
+lookups
+loopback
+lossy
+lrand
+lrte
+lrwxrwxrwx
+lscpu
+lsmod
+lspci
+lstopo
+lthread
+lthreads
+lundef
+macExtS
+macaddr
+macaddrs
+macsec
+macswap
+mainloop
+makefile
+makefiles
+malloc
+manpages
+mappable
+maskable
+maskbits
+masklen
+maxdepth
+maxflows
+maxhash
+maxlen
+maxp
+maxth
+mbcache
+mbox
+mbps
+mbuf
+mbuf's
+mbufs
+mcam
+mcast
+mcfg
+mcpu
+mcus
+mdev
+memAccess
+memconfig
+memcopy
+memcpy
+memdev
+memdump
+memfd
+memhdr
+memif
+meminfo
+memoryBacking
+mempool
+mempool's
+mempools
+memseg
+memsegs
+memset
+memsize
+memzone
+memzones
+menthod
+menuconfig
+mergeable
+mesonconf
+mgmt
+microarchitecture
+microarchitectures
+microblock
+middleboxes
+milli
+mingw
+miniCQE
+mins
+minth
+misalign
+misprediction
+mkconfig
+mkdir
+mlnx
+mlnxofedinstall
+mlockall
+mlxconfig
+mlxdevm
+mlxfwreset
+mlxreg
+mmap
+mmap'ed
+mmaping
+mmapped
+mmaps
+modex
+modexp
+modinfo
+modprobe
+mountpoint
+mpls
+mplsogre
+mplsoudp
+mpool
+mpps
+mprq
+mrvl
+msgs
+msix
+mspdc
+mtod
+mtophys
+mtrapi
+mtrr
+mtune
+multicast
+multicasting
+multicasts
+multicore
+multilib
+multiline
+multiport
+multiprocess
+multiqueue
+multithread
+multithreaded
+multithreading
+musdk
+musl
+mutex
+mutexes
+mvneta
+mvpp
+mvsam
+myapp
+mydoc
+mynet
+nack
+namespace
+nano
+nanosleep
+napi
+natively
+nbcore
+nbport
+negllr
+neoverse
+neta
+netcat
+netdev
+netdev's
+netdevice
+netif
+netlogdecode
+netperf
+netronome
+netuio
+netvf
+netvsc
+newdir
+newsize
+nexts
+nffw
+ngbe
+nics
+nicvf
+nitrox
+nixlf
+nocbs
+nodefaults
+nodeid
+nodeps
+nodesc
+nodeset
+nodev
+nodrop
+nographic
+nohz
+nointxmask
+noiommu
+nombuf
+noncontiguous
+nonleaf
+noreturn
+nowait
+npalf
+nrange
+nsec
+nseg
+ntohl
+ntuple
+numa
+numactl
+numatune
+numref
+numvfs
+nvgre
+oUDP
+obase
+objdump
+objhdr
+objs
+obytes
+octeon
+octeontx
+oerror
+oerrors
+ofed
+offsetof
+olflags
+onchip
+onwards
+opackets
+opdl
+openibd
+openssl
+openwrt
+optype
+osdep
+outb
+outes
+outoffset
+overcommitted
+oversubscription
+ovlan
+ovrd
+pCPU
+pCPUs
+packetbuffer
+pagefault
+pagemap
+pagemaps
+pagesize
+param
+paramX
+paramY
+paramZ
+params
+paravirtualized
+parm
+parsers
+passlist
+passthrough
+passthru
+patchset
+patchsets
+pcap
+pcapng
+pcaps
+pciconf
+pcidb
+pcifunc
+pcisf
+pcpu
+pctype
+pdcp
+pdev
+pdpe
+pdump
+perf
+performant
+personalization
+pfcp
+pflink
+pfnum
+phdr
+physaddr
+physmem
+pipelined
+pipelining
+pkgconf
+pkgconfig
+pkgo
+pkill
+pkivf
+pkmbuf
+pkovf
+pktgen
+pktlen
+pktmbuf
+pktmbufs
+pktmode
+pkts
+plaintext
+plcores
+plotly
+pluggable
+plugindir
+pmdinfo
+pmdinfogen
+pmds
+pmgmt
+policer
+popd
+portId
+portconf
+portid
+portlist
+portmap
+portmask
+portn
+portnum
+portstats
+postcopy
+postfix
+postmigrate
+powermonitor
+ppfe
+pppoe
+pqos
+prealloc
+preallocate
+preallocated
+preallocating
+prebuilt
+precompiled
+precomputed
+preconfigured
+preemptible
+prefetch
+prefetchable
+prefetched
+prefetches
+prefetching
+prefree
+prepended
+prepends
+preprocessor
+prerelease
+printf
+printk
+prio
+priv
+proc
+processfor
+procinfo
+procs
+profileid
+prog
+programmatically
+promisc
+promiscusity
+proto
+prototyped
+psec
+pseudocode
+pstate
+psutil
+ptest
+ptests
+pthread
+pthreads
+pthresh
+ptpclient
+ptrs
+ptype
+ptypes
+pushd
+pvalue
+pvid
+pyelftools
+qavg
+qbman
+qconf
+qcow
+qdisc
+qdma
+qede
+qedf
+qedi
+qedr
+qemu
+qidA
+qidB
+qidx
+qinq
+qint
+qmap
+qmapping
+qoriq
+qpairs
+qsbr
+qsize
+qtime
+queueid
+rarp
+rawdev
+rawdevice
+rawdevices
+rawdevs
+rdline
+rdlock
+rdma
+rdtsc
+reStructuredText
+readline
+readlink
+realloc
+rebalanced
+rebalancing
+reconfigurable
+reconfiguring
+reconnection
+recv
+refcnt
+refdir
+regbit
+regexdev
+regexdevs
+regfield
+regs
+reinitializes
+reinitializing
+repo
+representator
+representor
+representors
+reqs
+requestor
+responder
+restool
+resv
+reta
+retransmission
+retransmissions
+retval
+ringparam
+rlimit
+rmmod
+roadmap
+rootfs
+rply
+rqmts
+rsize
+rsrc
+rsvd
+rsync
+rtecryptodev
+rtemap
+rudimental
+runstate
+runtime
+rvIndex
+rwlock
+rwlocks
+rxbuf
+rxconf
+rxfreet
+rxht
+rxmode
+rxoffload
+rxoffs
+rxonly
+rxpkts
+rxportconf
+rxpt
+rxqs
+rxtx
+rxwt
+sPAPR
+sact
+sadv
+safexcel
+sbin
+scalability
+scalable
+scaleup
+scapy
+sched
+scheduler's
+sctp
+sdap
+secgw
+secpol
+segs
+segsize
+segsz
+seid
+selectable
+selftest
+selinux
+sendemail
+sendmsg
+sendp
+seqn
+sess
+sessionless
+setaffinity
+setcancelstate
+setcanceltype
+setcap
+setpci
+setschedparam
+setspecific
+setspeed
+sfboot
+sfnum
+sgmii
+shaper
+shapers
+shconf
+shmfd
+shortname
+signoff
+simd
+sizeof
+skiplist
+smac
+smallbuild
+smap
+smartNIC
+smartnic
+smtpencryption
+smtpserver
+smtpserverport
+smtpuser
+snat
+snprintf
+socat
+socketid
+socktype
+socs
+softirqs
+softmmu
+softnic
+softrss
+soname
+sonames
+spinlock
+spinlocks
+spoofable
+srTCM
+srcs
+sriov
+srtcm
+srtcmp
+ssopf
+ssovf
+stateful
+statefully
+stderr
+stdin
+stdint
+stdlib
+stdout
+stlist
+stmt
+strace
+strcmp
+strcpy
+strerror
+stripq
+strlen
+stroul
+strscpy
+strtoll
+strtoull
+struct
+structs
+stty
+stype
+subblock
+subdir
+subdirectories
+subdirectory
+subdirs
+subexpression
+subfolder
+sublists
+submode
+submodes
+subnet
+subport
+subports
+substream
+subtuple
+subvariant
+sudo
+sunsetted
+superpages
+svlan
+switchdev
+syncthreads
+sysctl
+sysfile
+sysfs
+syslog
+sysroot
+systemd
+szedata
+szedataII
+tabularcolumns
+taildrop
+tailroom
+tapvm
+taskset
+tcpdump
+tcpv
+teid
+telco
+testapp
+testbbdev
+testcancel
+testcase
+testcases
+testeventdev
+testpmd
+testpmd's
+testregex
+testsuite
+testsuites
+thash
+threadIdx
+threadfence
+thunderx
+timedlock
+timedrdlock
+timedwait
+timedwrlock
+timerdev
+timespec
+timestamping
+timesync
+timvf
+titi
+tmapi
+tmgr
+toctree
+toeplitz
+toolchain
+toolchains
+topologies
+totalvfs
+tpid
+tpmd
+trTCM
+tracebuild
+tracecompass
+tracepoint
+tracepoints
+tradeoff
+transactional
+transceiving
+trie
+trtcm
+trylock
+tryrdlock
+trywrlock
+tshark
+tswap
+ttyAMA
+tunX
+tuntap
+turb
+tuser
+txconf
+txfreet
+txgbe
+txgbevf
+txht
+txmode
+txoffload
+txonly
+txpkts
+txport
+txportconf
+txpt
+txqflags
+txqnum
+txqs
+txqueuelen
+txrate
+txrst
+txsplit
+txtimes
+txwt
+typedef
+typedefs
+ucast
+udata
+udevd
+udpv
+uevent
+uint
+uintXX
+uintptr
+uioX
+ulimit
+umem
+umount
+unack
+unacked
+uname
+uncachable
+uncomment
+uncompiled
+uncompress
+uncompressing
+unencrypted
+unfree
+unicast
+uninit
+uninitialization
+uninitialize
+uninitializes
+unint
+unioned
+uniq
+unittest
+unlink
+unmap
+unmapped
+unmapping
+unmount
+unregister
+unregistering
+unreserve
+unreserving
+unrouted
+unsetting
+untag
+untagged
+untags
+untar
+upgradable
+uplink
+upstreamable
+upstreamed
+uptime
+usec
+userdata
+userland
+userspace
+usertools
+usleep
+usvhost
+uucp
+uuid
+uverbs
+uwire
+vCPE
+vCPU
+vCPUs
+vDPA
+vEth
+vHost
+vIOMMU
+vNIC
+vNICs
+vPMD
+vPro
+vRAN
+vSphere
+vSwitch
+vSwitches
+validator
+vals
+variadic
+vchan
+vcpu
+vcpupin
+vdev
+vdevarg
+vdevs
+vdmq
+vdpa
+vdpadevs
+vdrv
+vect
+vectorization
+vectorize
+vectorized
+vendid
+vendorID
+verwrite
+verylongtypename
+vfio
+vhost
+vhostforce
+vhostuser
+virbr
+virsh
+virt
+virtaddr
+virtenv
+virtio
+virtq
+virtqueue
+virtqueues
+virtualised
+virtualized
+virtualport
+vlan
+vmbus
+vmdq
+vmname
+vmware
+vmxnet
+vnic
+vring
+vrings
+vswitch
+vsym
+vxlan
+wakeup
+webpage
+werror
+werrorbuild
+wget
+whitespace
+wireshark
+wlcore
+wlcores
+workqueue
+workqueues
+workslot
+wred
+writeback
+wrlock
+wrptr
+wthresh
+wwww
+xFEE
+xFFEF
+xFFF
+xFFFD
+xFFFELLU
+xFFFF
+xFFFFEF
+xFFFFFFFF
+xJvf
+xXXXXXXXX
+xbzrle
+xcast
+xcbc
+xdata
+xefff
+xenvirt
+xffff
+xffffff
+xffffffff
+xffffffffffffffff
+xform
+xforms
+xmem
+xmemhuge
+xmeta
+xmit
+xmode
+xoff
+xored
+xstat
+xstats
+xtype
+xxxx
+xxxxxx
+xxxxxxx
+yyyy
+zcat
+zlib
+zmalloc
+zxof
new file mode 100644
@@ -0,0 +1,2 @@
+# This file is used to exclude regex patterns from being passed to Aspell.
+# Each line is read as a single pattern.