tools/testing/selftests/gpio/gpio-mockup.sh

Source file repositories/reference/linux-study-clean/tools/testing/selftests/gpio/gpio-mockup.sh

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/gpio/gpio-mockup.sh
Extension
.sh
Size
8562 bytes
Lines
401
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: tools
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

#!/bin/bash -efu
# SPDX-License-Identifier: GPL-2.0

#exit status
#0: success
#1: fail
#4: skip test - including run as non-root user

BASE=${0%/*}
DEBUGFS=
GPIO_DEBUGFS=
dev_type="cdev"
module="gpio-mockup"
verbose=
full_test=
random=
uapi_opt=
active_opt=
bias_opt=
line_set_pid=

# Kselftest return codes
ksft_fail=1
ksft_skip=4

usage()
{
	echo "Usage:"
	echo "$0 [-frv] [-t type]"
	echo "-f:  full test (minimal set run by default)"
	echo "-r:  test random lines as well as fence posts"
	echo "-t:  interface type:"
	echo "      cdev (character device ABI) - default"
	echo "      cdev_v1 (deprecated character device ABI)"
	echo "      sysfs (deprecated SYSFS ABI)"
	echo "-v:  verbose progress reporting"
	exit $ksft_fail
}

skip()
{
	echo "$*" >&2
	echo "GPIO $module test SKIP"
	exit $ksft_skip
}

prerequisite()
{
	[ $(id -u) -eq 0 ] || skip "must be run as root"

	DEBUGFS=$(grep -w debugfs /proc/mounts | cut -f2 -d' ')
	[ -d "$DEBUGFS" ] || skip "debugfs is not mounted"

	GPIO_DEBUGFS=$DEBUGFS/$module
}

remove_module()
{
	modprobe -r -q $module
}

cleanup()
{
	set +e
	release_line
	remove_module
	jobs -p | xargs -r kill > /dev/null 2>&1
}

fail()

Annotation

Implementation Notes