xref: /illumos-gate/usr/src/cmd/pcitool/pcitool_ui.h (revision 6a634c9d)
1d5ace945SErwin T Tsaur /*
2d5ace945SErwin T Tsaur  * CDDL HEADER START
3d5ace945SErwin T Tsaur  *
4d5ace945SErwin T Tsaur  * The contents of this file are subject to the terms of the
5d5ace945SErwin T Tsaur  * Common Development and Distribution License (the "License").
6d5ace945SErwin T Tsaur  * You may not use this file except in compliance with the License.
7d5ace945SErwin T Tsaur  *
8d5ace945SErwin T Tsaur  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9d5ace945SErwin T Tsaur  * or http://www.opensolaris.org/os/licensing.
10d5ace945SErwin T Tsaur  * See the License for the specific language governing permissions
11d5ace945SErwin T Tsaur  * and limitations under the License.
12d5ace945SErwin T Tsaur  *
13d5ace945SErwin T Tsaur  * When distributing Covered Code, include this CDDL HEADER in each
14d5ace945SErwin T Tsaur  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15d5ace945SErwin T Tsaur  * If applicable, add the following below this CDDL HEADER, with the
16d5ace945SErwin T Tsaur  * fields enclosed by brackets "[]" replaced with your own identifying
17d5ace945SErwin T Tsaur  * information: Portions Copyright [yyyy] [name of copyright owner]
18d5ace945SErwin T Tsaur  *
19d5ace945SErwin T Tsaur  * CDDL HEADER END
20d5ace945SErwin T Tsaur  */
21d5ace945SErwin T Tsaur /*
22*5cd376e8SJimmy Vetayases  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
23d5ace945SErwin T Tsaur  */
24d5ace945SErwin T Tsaur 
25d5ace945SErwin T Tsaur #ifndef	_PCITOOL_UI_H
26d5ace945SErwin T Tsaur #define	_PCITOOL_UI_H
27d5ace945SErwin T Tsaur 
28d5ace945SErwin T Tsaur #ifdef	__cplusplus
29d5ace945SErwin T Tsaur extern "C" {
30d5ace945SErwin T Tsaur #endif
31d5ace945SErwin T Tsaur 
32d5ace945SErwin T Tsaur /*
33d5ace945SErwin T Tsaur  * This defines the interface between the pcitool_ui.c module which parses the
34d5ace945SErwin T Tsaur  * commandline options, and the other pcitool modules which process them.
35d5ace945SErwin T Tsaur  */
36d5ace945SErwin T Tsaur #define	SUCCESS	0	/* This does not conflict with errno values. */
37d5ace945SErwin T Tsaur #define	FAILURE	-1	/* General failure. */
38d5ace945SErwin T Tsaur 
39d5ace945SErwin T Tsaur /*
40d5ace945SErwin T Tsaur  * Flags which get set in the flags field of pcitool_uiargs_t. There is a flag
41d5ace945SErwin T Tsaur  * for each option specified on the commandline.
42d5ace945SErwin T Tsaur  */
43d5ace945SErwin T Tsaur #define	NEXUS_FLAG	0x1
44d5ace945SErwin T Tsaur #define	LEAF_FLAG	0x2
4509b1eac2SEvan Yan #define	INTR_FLAG	0x4		/* Either -i or -m specified */
46d5ace945SErwin T Tsaur #define	PROBEDEV_FLAG	0x8		/* Probe a specific device */
47d5ace945SErwin T Tsaur #define	PROBETREE_FLAG	0x10		/* Probe all devs on a tree */
48d5ace945SErwin T Tsaur #define	PROBEALL_FLAG	0x20		/* Probe devs on all trees */
49d5ace945SErwin T Tsaur #define	PROBERNG_FLAG	0x40		/* Probe devs within bus ranges */
50d5ace945SErwin T Tsaur 					/* - mod to PROBEALL and PROBETREE */
51d5ace945SErwin T Tsaur #define	PROBE_FLAGS	(PROBEDEV_FLAG | PROBETREE_FLAG | PROBEALL_FLAG | \
52d5ace945SErwin T Tsaur 				PROBERNG_FLAG)
53d5ace945SErwin T Tsaur #define	ALL_COMMANDS	(NEXUS_FLAG | LEAF_FLAG | INTR_FLAG | PROBE_FLAGS)
54d5ace945SErwin T Tsaur #define	READ_FLAG	0x80
55d5ace945SErwin T Tsaur #define	WRITE_FLAG	0x100
56d5ace945SErwin T Tsaur #define	OFFSET_FLAG	0x200
57d5ace945SErwin T Tsaur #define	SIZE_FLAG	0x400
58d5ace945SErwin T Tsaur #define	ENDIAN_FLAG	0x800
59d5ace945SErwin T Tsaur #define	BYTEDUMP_FLAG	0x1000
60d5ace945SErwin T Tsaur #define	CHARDUMP_FLAG	0x2000
61d5ace945SErwin T Tsaur #define	ERRCONT_FLAG	0x4000
62d5ace945SErwin T Tsaur #define	VERBOSE_FLAG	0x8000
63d5ace945SErwin T Tsaur #define	QUIET_FLAG	0x10000
64d5ace945SErwin T Tsaur #define	LOOP_FLAG	0x20000
65d5ace945SErwin T Tsaur #define	SHOWCTLR_FLAG	0x40000
66d5ace945SErwin T Tsaur #define	SETGRP_FLAG	0x80000
67d5ace945SErwin T Tsaur 
68d5ace945SErwin T Tsaur /* Values specified by suboption parser. */
69d5ace945SErwin T Tsaur #define	BANK_SPEC_FLAG	(0x10000ULL << 32)
70d5ace945SErwin T Tsaur #define	BASE_SPEC_FLAG	(0x20000ULL << 32)
71d5ace945SErwin T Tsaur #define	BUS_SPEC_FLAG	(0x40000ULL << 32)
72d5ace945SErwin T Tsaur #define	DEV_SPEC_FLAG	(0x80000ULL << 32)
73d5ace945SErwin T Tsaur #define	FUNC_SPEC_FLAG	(0x100000ULL << 32)
7409b1eac2SEvan Yan #define	CPU_SPEC_FLAG	(0x200000ULL << 32)	/* -w <cpu#> */
7509b1eac2SEvan Yan #define	INO_ALL_FLAG	(0x400000ULL << 32)	/* -i all */
7609b1eac2SEvan Yan #define	INO_SPEC_FLAG	(0x800000ULL << 32)	/* -i <#ino> */
7709b1eac2SEvan Yan #define	MSI_ALL_FLAG	(0x1000000ULL << 32)	/* -m all */
7809b1eac2SEvan Yan #define	MSI_SPEC_FLAG	(0x2000000ULL << 32)	/* -m <#msi> */
79d5ace945SErwin T Tsaur 
80d5ace945SErwin T Tsaur /* Macros for a few heavily-used flags. */
81d5ace945SErwin T Tsaur #define	IS_VERBOSE(flags)	(flags & VERBOSE_FLAG)
82d5ace945SErwin T Tsaur #define	IS_QUIET(flags)		(flags & QUIET_FLAG)
83d5ace945SErwin T Tsaur #define	IS_LOOP(flags)		(flags & LOOP_FLAG)
84d5ace945SErwin T Tsaur 
85d5ace945SErwin T Tsaur /*
86d5ace945SErwin T Tsaur  * This is the structure of flags and parsed values returned from pcitool_ui.c
87d5ace945SErwin T Tsaur  */
88d5ace945SErwin T Tsaur typedef struct uiargs {
89d5ace945SErwin T Tsaur 	uint64_t	write_value;
90d5ace945SErwin T Tsaur 	uint64_t	base_address;
91d5ace945SErwin T Tsaur 	uint64_t	flags;
92d5ace945SErwin T Tsaur 	uint32_t	offset;
93d5ace945SErwin T Tsaur 	uint32_t	bytedump_amt;
94d5ace945SErwin T Tsaur 	uint32_t	intr_cpu;
957ff178cdSJimmy Vetayases 	uint32_t	old_cpu;
96d5ace945SErwin T Tsaur 	uint8_t		bus;
97d5ace945SErwin T Tsaur 	uint8_t		device;
98d5ace945SErwin T Tsaur 	uint8_t		function;
99d5ace945SErwin T Tsaur 	uint8_t		size;
100d5ace945SErwin T Tsaur 	uint8_t		bank;
101d5ace945SErwin T Tsaur 	uint8_t		intr_ino;
10209b1eac2SEvan Yan 	uint16_t	intr_msi;
103d5ace945SErwin T Tsaur 	boolean_t	big_endian;
104d5ace945SErwin T Tsaur } pcitool_uiargs_t;
105d5ace945SErwin T Tsaur 
106d5ace945SErwin T Tsaur /* Exported functions. */
107d5ace945SErwin T Tsaur 
108d5ace945SErwin T Tsaur int get_commandline_args(int argc, char *argv[], pcitool_uiargs_t *parsed_args);
109d5ace945SErwin T Tsaur void usage(char *name);
110d5ace945SErwin T Tsaur 
111d5ace945SErwin T Tsaur #ifdef	__cplusplus
112d5ace945SErwin T Tsaur }
113d5ace945SErwin T Tsaur #endif
114d5ace945SErwin T Tsaur 
115d5ace945SErwin T Tsaur #endif	/* _PCITOOL_UI_H */
116