Print this page
14249 pseudo-terminal nomenclature should reflect POSIX
Change-Id: Ib4a3cef899ff4c71b09cb0dc6878863c5e8357bc
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/uts/common/sys/ptms.h
+++ new/usr/src/uts/common/sys/ptms.h
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License (the "License").
6 6 * You may not use this file except in compliance with the License.
7 7 *
8 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 9 * or http://www.opensolaris.org/os/licensing.
10 10 * See the License for the specific language governing permissions
11 11 * and limitations under the License.
12 12 *
13 13 * When distributing Covered Code, include this CDDL HEADER in each
14 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 15 * If applicable, add the following below this CDDL HEADER, with the
16 16 * fields enclosed by brackets "[]" replaced with your own identifying
17 17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 18 *
19 19 * CDDL HEADER END
20 20 */
21 21 /*
22 22 * Copyright (c) 1988, 2010, Oracle and/or its affiliates. All rights reserved.
23 23 */
24 24 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
25 25 /* All Rights Reserved */
26 26
27 27
↓ open down ↓ |
27 lines elided |
↑ open up ↑ |
28 28 #ifndef _SYS_PTMS_H
29 29 #define _SYS_PTMS_H
30 30
31 31 #ifdef __cplusplus
32 32 extern "C" {
33 33 #endif
34 34
35 35 #ifdef _KERNEL
36 36
37 37 /*
38 - * Structures and definitions supporting the pseudo terminal
39 - * drivers. This structure is private and should not be used by any
40 - * applications.
38 + * Structures and definitions supporting the pseudo-terminal drivers. This
39 + * structure is private and should not be used by any applications.
41 40 */
42 41 struct pt_ttys {
43 - queue_t *ptm_rdq; /* master's read queue pointer */
44 - queue_t *pts_rdq; /* slave's read queue pointer */
42 + queue_t *ptm_rdq; /* manager's read queue pointer */
43 + queue_t *pts_rdq; /* subsidiary's read queue pointer */
45 44 mblk_t *pt_nullmsg; /* 0-bytes message block for pts close */
46 45 pid_t pt_pid; /* process id (for debugging) */
47 46 minor_t pt_minor; /* Minor number of this pty */
48 47 int pt_refcnt; /* reference count for ptm_rdq/pts_rdq uses */
49 - ushort_t pt_state; /* state of master/slave pair */
48 + ushort_t pt_state; /* state of manager/subsidiary pair */
50 49 kcondvar_t pt_cv; /* condition variable for exclusive access */
51 50 kmutex_t pt_lock; /* Per-element lock */
52 51 zoneid_t pt_zoneid; /* Zone membership for this pty */
53 52 uid_t pt_ruid; /* Real owner of pty */
54 53 gid_t pt_rgid; /* Real group owner of pty */
55 54 };
56 55
57 56 /*
58 57 * pt_state values
59 58 */
60 -#define PTLOCK 0x01 /* master/slave pair is locked */
61 -#define PTMOPEN 0x02 /* master side is open */
62 -#define PTSOPEN 0x04 /* slave side is open */
63 -#define PTSTTY 0x08 /* slave side is tty */
59 +#define PTLOCK 0x01 /* manager/subsidiary pair is locked */
60 +#define PTMOPEN 0x02 /* manager side is open */
61 +#define PTSOPEN 0x04 /* subsidiary side is open */
62 +#define PTSTTY 0x08 /* subsidiary side is tty */
64 63
65 64 /*
66 65 * Multi-threading primitives.
67 66 * Values of pt_refcnt: -1 if a writer is accessing the struct
68 67 * 0 if no one is reading or writing
69 68 * > 0 equals to the number of readers accessing the struct
70 69 */
71 70 #define PT_ENTER_READ(p) { \
72 71 mutex_enter(&(p)->pt_lock); \
73 72 while ((p)->pt_refcnt < 0) \
74 73 cv_wait(&((p)->pt_cv), &(p)->pt_lock); \
75 74 (p)->pt_refcnt++; \
76 75 mutex_exit(&(p)->pt_lock); \
77 76 }
78 77
79 78 #define PT_ENTER_WRITE(p) { \
80 79 mutex_enter(&(p)->pt_lock); \
81 80 while ((p)->pt_refcnt != 0) \
82 81 cv_wait(&((p)->pt_cv), &(p)->pt_lock); \
83 82 (p)->pt_refcnt = -1; \
84 83 mutex_exit(&(p)->pt_lock); \
85 84 }
86 85
87 86 #define PT_EXIT_READ(p) { \
88 87 mutex_enter(&(p)->pt_lock); \
89 88 ASSERT((p)->pt_refcnt > 0); \
90 89 if ((--((p)->pt_refcnt)) == 0) \
91 90 cv_broadcast(&(p)->pt_cv); \
92 91 mutex_exit(&(p)->pt_lock); \
93 92 }
94 93
95 94 #define PT_EXIT_WRITE(p) { \
96 95 mutex_enter(&(p)->pt_lock); \
↓ open down ↓ |
23 lines elided |
↑ open up ↑ |
97 96 ASSERT((p)->pt_refcnt == -1); \
98 97 (p)->pt_refcnt = 0; \
99 98 cv_broadcast(&(p)->pt_cv); \
100 99 mutex_exit(&(p)->pt_lock); \
101 100 }
102 101
103 102 /*
104 103 * ptms_lock and pt_cnt are defined in ptms_conf.c
105 104 */
106 105 extern kmutex_t ptms_lock;
107 -extern dev_info_t *pts_dip; /* private copy of devinfo ptr */
106 +extern dev_info_t *pts_dip; /* private copy of devinfo ptr */
108 107
109 108 extern void ptms_init(void);
110 109 extern struct pt_ttys *pt_ttys_alloc(void);
111 110 extern void ptms_close(struct pt_ttys *, uint_t);
112 111 extern struct pt_ttys *ptms_minor2ptty(minor_t);
113 -extern int ptms_attach_slave(void);
112 +extern int ptms_attach_subsidiary(void);
114 113 extern int ptms_minor_valid(minor_t ptmin, uid_t *uid, gid_t *gid);
115 114 extern int ptms_minor_exists(minor_t ptmin);
116 115 extern void ptms_set_owner(minor_t ptmin, uid_t uid, gid_t gid);
117 -extern major_t ptms_slave_attached(void);
116 +extern major_t ptms_subsidiary_attached(void);
118 117
119 118 #ifdef DEBUG
120 119 extern void ptms_log(char *, uint_t);
121 120 extern void ptms_logp(char *, uintptr_t);
122 121 #define DDBG(a, b) ptms_log(a, b)
123 122 #define DDBGP(a, b) ptms_logp(a, b)
124 123 #else
125 124 #define DDBG(a, b)
126 125 #define DDBGP(a, b)
127 126 #endif
128 127
129 128 #endif /* _KERNEL */
130 129
131 130 typedef struct pt_own {
132 131 uid_t pto_ruid;
133 132 gid_t pto_rgid;
134 133 } pt_own_t;
135 134
136 135 /*
137 - * ioctl commands
136 + * IOCTL COMMANDS
138 137 *
139 - * ISPTM: Determines whether the file descriptor is that of an open master
140 - * device. Return code of zero indicates that the file descriptor
141 - * represents master device.
138 + * ISPTM
139 + * Determines whether the file descriptor is that of an open
140 + * manager device. Return code of zero indicates that the file
141 + * descriptor represents a manager device.
142 142 *
143 - * UNLKPT: Unlocks the master and slave devices. It returns 0 on success. On
144 - * failure, the errno is set to EINVAL indicating that the master
145 - * device is not open.
143 + * UNLKPT
144 + * Unlocks the manager and subsidiary devices. It returns 0 on
145 + * success. On failure, the errno is set to EINVAL indicating
146 + * that the manager device is not open.
146 147 *
147 - * ZONEPT: Sets the zoneid of the pair of master and slave devices. It
148 - * returns 0 upon success. Used to force a pty 'into' a zone upon
149 - * zone entry.
148 + * ZONEPT
149 + * Sets the zoneid of the pair of manager and subsidiary devices.
150 + * It returns 0 upon success. Used to force a pty 'into' a zone
151 + * upon zone entry.
150 152 *
151 - * PT_OWNER: Sets uid and gid for slave device. It returns 0 on success.
152 - *
153 + * PT_OWNER
154 + * Sets uid and gid for subsidiary device. It returns 0 on
155 + * success.
153 156 */
154 -#define ISPTM (('P'<<8)|1) /* query for master */
155 -#define UNLKPT (('P'<<8)|2) /* unlock master/slave pair */
156 -#define PTSSTTY (('P'<<8)|3) /* set tty flag */
157 -#define ZONEPT (('P'<<8)|4) /* set zone of master/slave pair */
158 -#define OWNERPT (('P'<<8)|5) /* set owner/group for slave device */
157 +#define ISPTM (('P'<<8)|1) /* query for manager */
158 +#define UNLKPT (('P'<<8)|2) /* unlock manager/subsidiary pair */
159 +#define PTSSTTY (('P'<<8)|3) /* set tty flag */
160 +#define ZONEPT (('P'<<8)|4) /* set zone of manager/subsidiary pair */
161 +#define OWNERPT (('P'<<8)|5) /* set owner/group for subsidiary */
159 162
160 163 #ifdef __cplusplus
161 164 }
162 165 #endif
163 166
164 167 #endif /* _SYS_PTMS_H */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX