Skip to content

Commit 04fc08f

Browse files
committed
Add TIOCMGET/TIOCMSET ioctl.
1 parent 87083e6 commit 04fc08f

3 files changed

Lines changed: 28 additions & 0 deletions

File tree

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,6 +1141,7 @@ set(BASIC_TESTS
11411141
ioctl_pty
11421142
ioctl_sg
11431143
ioctl_tty
1144+
ioctl_ttyS
11441145
ioctl_vt
11451146
ioprio
11461147
x86/ioperm

src/record_syscall.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1800,6 +1800,8 @@ static Switchable prepare_ioctl(RecordTask* t,
18001800
case TIOCINQ: // == FIONREAD
18011801
case TIOCOUTQ:
18021802
case TIOCGETD:
1803+
case TIOCMGET:
1804+
case TIOCMSET:
18031805
case VT_OPENQRY:
18041806
syscall_state.reg_parameter<int>(3);
18051807
return PREVENT_SWITCH;

src/test/ioctl_ttyS.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/* -*- Mode: C; tab-width: 8; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
2+
3+
#include "util.h"
4+
5+
int main(void) {
6+
int fd;
7+
int* mbits;
8+
9+
fd = open("/dev/ttyS0", O_RDWR);
10+
if (fd < 0) {
11+
atomic_puts("Can't open ttyS0, aborting test");
12+
atomic_puts("EXIT-SUCCESS");
13+
return 0;
14+
}
15+
16+
ALLOCATE_GUARD(mbits, 'a');
17+
test_assert(0 == ioctl(fd, TIOCMGET, mbits));
18+
VERIFY_GUARD(mbits);
19+
atomic_printf("TIOCMGET returned mbits=0x%x\n", *mbits);
20+
test_assert(0 == ioctl(fd, TIOCMSET, mbits));
21+
atomic_printf("TIOCMSET mbits=0x%x afterwards\n", *mbits);
22+
23+
atomic_puts("EXIT-SUCCESS");
24+
return 0;
25+
}

0 commit comments

Comments
 (0)