From patchwork Fri Jan 23 12:54:13 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Monjalon X-Patchwork-Id: 2499 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 0F2CB5B02; Fri, 23 Jan 2015 13:54:50 +0100 (CET) Received: from mail-wg0-f41.google.com (mail-wg0-f41.google.com [74.125.82.41]) by dpdk.org (Postfix) with ESMTP id 43D785B01 for ; Fri, 23 Jan 2015 13:54:48 +0100 (CET) Received: by mail-wg0-f41.google.com with SMTP id a1so7348661wgh.0 for ; Fri, 23 Jan 2015 04:54:48 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-type:content-transfer-encoding; bh=4qD7m7HT3p5ML0hj4lZ3V34rOQesSg8P+iTlcHdnZ1o=; b=j+lUJcn3VYe1S4G4Cmtn8G+haSHvtw/rapOuag0sA4Il/D4HBp62fSl/GqWk/2axHM 52RhfA3JZdnvStuu0KY2UquCyhvLXBYsVgwAG9K0i3FQ3xDXdsx4k3DW4LWVATBeJPe3 FA0Y4xo68FKUYqRxbsAYiU94pab13qhRhX1d72MZ+cab7fCk1fOpJgA00x8sL2vbJ8Fc l9w6c2qYg5XhCsA/bMz0jOkUBBsHNmQf5II1hVxKOeJNVlKJbTZxhGaGD5wuGOEt2OQc LgCNQGNmEpWFKzRw7HMtzSfc4MN9xJfm9Et7En4Tpfbg8o+8ocxkLADXFXl3SqP7Y/0x R/sg== X-Gm-Message-State: ALoCoQmc20EUIm0n5lQk1JtdBuxVmVOs0gWrdF3yxUeUB8Wwzs6BewVLIZH3O59ydkF0RhPQkarK X-Received: by 10.194.236.200 with SMTP id uw8mr14188006wjc.10.1422017687926; Fri, 23 Jan 2015 04:54:47 -0800 (PST) Received: from localhost.localdomain (136-92-190-109.dsl.ovh.fr. [109.190.92.136]) by mx.google.com with ESMTPSA id c10sm2133213wjy.4.2015.01.23.04.54.46 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 23 Jan 2015 04:54:47 -0800 (PST) From: Thomas Monjalon To: dev@dpdk.org Date: Fri, 23 Jan 2015 13:54:13 +0100 Message-Id: <1422017653-31442-1-git-send-email-thomas.monjalon@6wind.com> X-Mailer: git-send-email 2.2.2 MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH] maintainers: start a Linux-style file X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This MAINTAINERS file is inspired from the Linux one. Almost all files are split into areas in order to identify maintainers of each DPDK area. Note that a maintainer is not a git tree manager. Candidates are welcome to send a patch to sign up for one or several areas. There is a script to check covering, especially when adding or moving files. Signed-off-by: Thomas Monjalon Acked-by: Neil Horman --- MAINTAINERS | 388 +++++++++++++++++++++++++++++++++++++++++++ scripts/check-maintainers.sh | 85 ++++++++++ 2 files changed, 473 insertions(+) create mode 100644 MAINTAINERS create mode 100755 scripts/check-maintainers.sh diff --git a/MAINTAINERS b/MAINTAINERS new file mode 100644 index 0000000..1f7d04a --- /dev/null +++ b/MAINTAINERS @@ -0,0 +1,388 @@ +DPDK Maintainers +================ + +The intention of this file is to provide a set of names that we can rely on +for helping in patch reviews and questions. +These names are additional recipients for emails sent to dev@dpdk.org. +Please avoid private emails. + +Descriptions of section entries: + + M: Maintainer's Full Name + T: Git tree location. + F: Files and directories with wildcard patterns. + A trailing slash includes all files and subdirectory files. + A wildcard includes all files but not subdirectories. + One pattern per line. Multiple F: lines acceptable. + X: Files and directories exclusion, same rules as F: + K: Keyword regex pattern to match content. + One regex pattern per line. Multiple K: lines acceptable. + + +General Project Administration +------------------------------ +M: Thomas Monjalon +T: git://dpdk.org/dpdk +F: MAINTAINERS +F: scripts/check-maintainers.sh + + +Security Issues +--------------- +M: maintainers@dpdk.org + + +Documentation (with overlaps) +------------- +F: doc/ + + +Build System +------------ +F: GNUmakefile +F: Makefile +F: config/ +F: mk/ +F: pkg/ +F: scripts/depdirs-rule.sh +F: scripts/gen-build-mk.sh +F: scripts/gen-config-h.sh +F: scripts/relpath.sh + + +Environment Abstraction Layer +----------------------------- + +EAL API and common code +M: Thomas Monjalon +F: lib/librte_eal/common/* +F: lib/librte_eal/common/include/* +F: lib/librte_eal/common/include/generic/ +F: app/test/test_alarm.c +F: app/test/test_atomic.c +F: app/test/test_byteorder.c +F: app/test/test_common.c +F: app/test/test_cpuflags.c +F: app/test/test_cycles.c +F: app/test/test_debug.c +F: app/test/test_devargs.c +F: app/test/test_eal* +F: app/test/test_errno.c +F: app/test/test_func_reentrancy.c +F: app/test/test_interrupts.c +F: app/test/test_logs.c +F: app/test/test_memcpy* +F: app/test/test_memory.c +F: app/test/test_memzone.c +F: app/test/test_pci.c +F: app/test/test_per_lcore.c +F: app/test/test_prefetch.c +F: app/test/test_rwlock.c +F: app/test/test_spinlock.c +F: app/test/test_string_fns.c +F: app/test/test_tailq.c +F: app/test/test_version.c + +Secondary process +K: RTE_PROC_ +F: doc/guides/prog_guide/multi_proc_support.rst +F: app/test/test_mp_secondary.c +F: examples/multi_process/ +F: doc/guides/sample_app_ug/multi_process.rst + +IBM Power +F: lib/librte_eal/common/include/arch/ppc_64/ + +Intel x86 +F: lib/librte_eal/common/include/arch/x86/ + +Linux EAL (with overlaps) +F: lib/librte_eal/linuxapp/Makefile +F: lib/librte_eal/linuxapp/eal/ +F: doc/guides/linux_gsg/ + +Linux UIO +F: lib/librte_eal/linuxapp/igb_uio/ +F: lib/librte_eal/linuxapp/eal/*uio* + +Linux VFIO +F: lib/librte_eal/linuxapp/eal/*vfio* + +Linux Xen +F: lib/librte_eal/linuxapp/xen_dom0/ +F: lib/librte_eal/linuxapp/eal/*xen* +F: lib/librte_eal/linuxapp/eal/include/exec-env/rte_dom0_common.h +F: lib/librte_mempool/rte_dom0_mempool.c +F: lib/librte_pmd_xenvirt/ +F: app/test-pmd/mempool_* +F: examples/vhost_xen/ +F: doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst + +FreeBSD EAL (with overlaps) +F: lib/librte_eal/bsdapp/Makefile +F: lib/librte_eal/bsdapp/eal/ +F: doc/guides/freebsd_gsg/ + +FreeBSD contigmem +F: lib/librte_eal/bsdapp/contigmem/ + +FreeBSD UIO +F: lib/librte_eal/bsdapp/nic_uio/ + + +Core Libraries +-------------- + +Memory management +F: lib/librte_malloc/ +F: doc/guides/prog_guide/malloc_lib.rst +F: app/test/test_malloc.c +F: lib/librte_mempool/ +F: doc/guides/prog_guide/mempool_lib.rst +F: app/test/test_mempool* +F: app/test/test_func_reentrancy.c + +Ring queue +F: lib/librte_ring/ +F: app/test/test_ring* +F: app/test/test_func_reentrancy.c + +Packet buffer +F: lib/librte_mbuf/ +F: doc/guides/prog_guide/mbuf_lib.rst +F: app/test/test_mbuf.c + +Ethernet API +M: Thomas Monjalon +F: lib/librte_ether/ + + +Drivers +------- + +Link bonding +F: lib/librte_pmd_bond/ +F: doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst +F: app/test/test_link_bonding.c + +Linux KNI +F: lib/librte_eal/linuxapp/kni/ +F: lib/librte_kni/ +F: doc/guides/prog_guide/kernel_nic_interface.rst +F: app/test/test_kni.c +F: examples/kni/ +F: doc/guides/sample_app_ug/kernel_nic_interface.rst + +Linux AF_PACKET +F: lib/librte_pmd_af_packet/ + +Cisco enic +F: lib/librte_pmd_enic/ + +Intel e1000 +F: lib/librte_pmd_e1000/ + +Intel ixgbe +F: lib/librte_pmd_ixgbe/ + +Intel i40e +F: lib/librte_pmd_i40e/ + +RedHat virtio +F: lib/librte_pmd_virtio/ +F: doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst +F: lib/librte_vhost/ +F: doc/guides/prog_guide/vhost_lib.rst +F: examples/vhost/ +F: doc/guides/sample_app_ug/vhost.rst + +VMware vmxnet3 +F: lib/librte_pmd_vmxnet3/ +F: doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst + +PCAP PMD +F: lib/librte_pmd_pcap/ +F: doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst + +Ring PMD +F: lib/librte_pmd_ring/ +F: doc/guides/prog_guide/ring_lib.rst +F: app/test/test_pmd_ring.c + + +Packet processing +----------------- + +Network headers +F: lib/librte_net/ + +IP fragmentation & reassembly +F: lib/librte_ip_frag/ +F: doc/guides/prog_guide/ip_fragment_reassembly_lib.rst +F: examples/ip_fragmentation/ +F: doc/guides/sample_app_ug/ip_frag.rst +F: examples/ip_reassembly/ +F: doc/guides/sample_app_ug/ip_reassembly.rst + +Distributor +F: lib/librte_distributor/ +F: doc/guides/prog_guide/packet_distrib_lib.rst +F: app/test/test_distributor* +F: examples/distributor/ +F: doc/guides/sample_app_ug/dist_app.rst + +Hierarchical scheduler +F: lib/librte_sched/ +F: doc/guides/prog_guide/qos_framework.rst +F: app/test/test_red.c +F: app/test/test_sched.c +F: examples/qos_sched/ +F: doc/guides/sample_app_ug/qos_scheduler.rst + + +Packet Framework +---------------- +F: lib/librte_pipeline/ +F: lib/librte_port/ +F: lib/librte_table/ +F: doc/guides/prog_guide/packet_framework.rst +F: app/test/test_table* +F: app/test-pipeline/ +F: doc/guides/sample_app_ug/test_pipeline.rst +F: examples/ip_pipeline/ +F: doc/guides/sample_app_ug/internet_proto_ip_pipeline.rst + + +Algorithms +---------- + +ACL +F: lib/librte_acl/ +F: doc/guides/prog_guide/packet_classif_access_ctrl.rst +F: app/test-acl/ +F: app/test/test_acl.* +F: examples/l3fwd-acl/ +F: doc/guides/sample_app_ug/l3_forward_access_ctrl.rst + +Hashes +F: lib/librte_hash/ +F: doc/guides/prog_guide/hash_lib.rst +F: app/test/test_hash* +F: app/test/test_func_reentrancy.c + +LPM +F: lib/librte_lpm/ +F: doc/guides/prog_guide/lpm* +F: app/test/test_lpm* +F: app/test/test_func_reentrancy.c + +Traffic metering +F: lib/librte_meter/ +F: doc/guides/sample_app_ug/qos_scheduler.rst +F: app/test/test_meter.c +F: examples/qos_meter/ +F: doc/guides/sample_app_ug/qos_metering.rst + + +Other libraries +--------------- + +Configuration file +F: lib/librte_cfgfile/ + +Interactive command line +F: lib/librte_cmdline/ +F: app/cmdline_test/ +F: app/test/test_cmdline* +F: examples/cmdline/ +F: doc/guides/sample_app_ug/cmd_line.rst + +Qemu IVSHMEM +F: lib/librte_ivshmem/ +F: lib/librte_eal/linuxapp/eal/eal_ivshmem.c +F: doc/guides/prog_guide/ivshmem_lib.rst +F: app/test/test_ivshmem.c +F: examples/l2fwd-ivshmem/ + +Key/Value parsing +F: lib/librte_kvargs/ +F: app/test/test_kvargs.c + +Power management +F: lib/librte_power/ +F: doc/guides/prog_guide/power_man.rst +F: app/test/test_power* +F: examples/l3fwd-power/ +F: doc/guides/sample_app_ug/l3_forward_power_man.rst +F: examples/vm_power_manager/ +F: doc/guides/sample_app_ug/vm_power_management.rst + +Timers +F: lib/librte_timer/ +F: doc/guides/prog_guide/timer_lib.rst +F: app/test/test_timer* +F: examples/timer/ +F: doc/guides/sample_app_ug/timer.rst + + +Test Applications +----------------- + +Unit tests framework +F: app/test/autotest* +F: app/test/commands.c +F: app/test/packet_burst_generator.c +F: app/test/packet_burst_generator.h +F: app/test/process.h +F: app/test/test.c +F: app/test/test.h +F: app/test/test_pmd_perf.c +F: app/test/virtual_pmd.c +F: app/test/virtual_pmd.h + +Driver testing tool +F: app/test-pmd/ +F: doc/guides/testpmd_app_ug/ + + +Other Example Applications +-------------------------- + +F: examples/dpdk_qat/ +F: doc/guides/sample_app_ug/intel_quickassist.rst + +F: examples/exception_path/ +F: doc/guides/sample_app_ug/exception_path.rst + +F: examples/helloworld/ +F: doc/guides/sample_app_ug/hello_world.rst + +F: examples/ipv4_multicast/ +F: doc/guides/sample_app_ug/ipv4_multicast.rst + +F: examples/l2fwd/ +F: doc/guides/sample_app_ug/l2_forward_real_virtual.rst + +F: examples/l3fwd/ +F: doc/guides/sample_app_ug/l3_forward.rst + +F: examples/l3fwd-vf/ +F: doc/guides/sample_app_ug/l3_forward_virtual.rst + +F: examples/link_status_interrupt/ +F: doc/guides/sample_app_ug/link_status_intr.rst + +F: examples/load_balancer/ +F: doc/guides/sample_app_ug/load_balancer.rst + +F: examples/netmap_compat/ +F: doc/guides/sample_app_ug/netmap_compatibility.rst + +F: examples/quota_watermark/ +F: doc/guides/sample_app_ug/quota_watermark.rst + +F: examples/skeleton/ + +F: examples/vmdq/ +F: examples/vmdq_dcb/ +F: doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst diff --git a/scripts/check-maintainers.sh b/scripts/check-maintainers.sh new file mode 100755 index 0000000..fbee8bb --- /dev/null +++ b/scripts/check-maintainers.sh @@ -0,0 +1,85 @@ +#! /bin/sh + +# Do some basic checks in MAINTAINERS file + +cd $(dirname $0)/.. + +# Get files matching paths with wildcards and / meaning recursing +files () # [ ...] +{ + if [ -z "$1" ] ; then + return + fi + if [ -d .git ] ; then + git ls-files "$1" + else + find "$1" -type f | + sed 's,^\./,,' + fi | + # if not ended by / + if ! echo "$1" | grep -q '/[[:space:]]*$' ; then + # filter out deeper directories + sed "/\(\/[^/]*\)\{$(($(echo "$1" | grep -o / | wc -l) + 1))\}/d" + else + cat + fi + shift + files "$@" +} + +# Get all files matching F: and X: fields +parse_fx () # +{ + IFS=' +' + # parse each line excepted underlining + for line in $( (grep -v '^-\+$' $1 && echo) | sed 's,^$,§,') ; do + if echo "$line" | grep -q '^§$' ; then + # empty line delimit end of section + whitelist=$(files $flines) + blacklist=$(files $xlines) + match=$(aminusb "$whitelist" "$blacklist") + if [ -n "$match" ] ; then + echo "# $title" + echo "$match" + fi + # flush section + unset flines + unset xlines + elif echo "$line" | grep -q '^[A-Z]: ' ; then + # file matching pattern + flines=$(add_line_to_if "$line" "$flines" "F: ") + # file exclusion pattern + xlines=$(add_line_to_if "$line" "$xlines" "X: ") + else # assume it is a title + title="$line" + fi + done +} + +# Add a line to a set of lines if it begins with right pattern +add_line_to_if () # +{ + ( + echo "$2" + echo "$1" | sed -rn "s,^$3(.*),\1,p" + ) | + sed '/^$/d' +} + +# Subtract two sets of lines +aminusb () # +{ + printf "$1\n$2\n$2" | sort | uniq -u | sed '/^$/d' +} + +all=$(files ./) +listed=$(parse_fx MAINTAINERS | grep -v '^#' | sort -u) + +echo '##########' +echo '# files not listed' +echo '##########' +aminusb "$all" "$listed" + +# TODO: check overlaps +# TODO: check orphan area