Skip to content

Commit 304cfda

Browse files
committed
py/stream: Move ad-hoc ioctl constants to stream.h and rename them.
The constants MP_IOCTL_POLL_xxx, which were stmhal-specific, are moved from stmhal/pybioctl.h (now deleted) to py/stream.h. And they are renamed to MP_STREAM_POLL_xxx to be consistent with other such constants. All uses of these constants have been updated.
1 parent 6194336 commit 304cfda

9 files changed

Lines changed: 61 additions & 68 deletions

File tree

cc3200/mods/modwlan.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
#include "modnetwork.h"
4646
#include "modusocket.h"
4747
#include "modwlan.h"
48-
#include "pybioctl.h"
4948
#include "pybrtc.h"
5049
#include "debug.h"
5150
#if (MICROPY_PORT_HAS_TELNET || MICROPY_PORT_HAS_FTP)
@@ -1461,7 +1460,7 @@ int wlan_socket_settimeout(mod_network_socket_obj_t *s, mp_uint_t timeout_s, int
14611460

14621461
int wlan_socket_ioctl (mod_network_socket_obj_t *s, mp_uint_t request, mp_uint_t arg, int *_errno) {
14631462
mp_int_t ret;
1464-
if (request == MP_IOCTL_POLL) {
1463+
if (request == MP_STREAM_POLL) {
14651464
mp_uint_t flags = arg;
14661465
ret = 0;
14671466
int32_t sd = s->sock_base.sd;
@@ -1473,13 +1472,13 @@ int wlan_socket_ioctl (mod_network_socket_obj_t *s, mp_uint_t request, mp_uint_t
14731472
FD_ZERO(&xfds);
14741473

14751474
// set fds if needed
1476-
if (flags & MP_IOCTL_POLL_RD) {
1475+
if (flags & MP_STREAM_POLL_RD) {
14771476
FD_SET(sd, &rfds);
14781477
}
1479-
if (flags & MP_IOCTL_POLL_WR) {
1478+
if (flags & MP_STREAM_POLL_WR) {
14801479
FD_SET(sd, &wfds);
14811480
}
1482-
if (flags & MP_IOCTL_POLL_HUP) {
1481+
if (flags & MP_STREAM_POLL_HUP) {
14831482
FD_SET(sd, &xfds);
14841483
}
14851484

@@ -1497,13 +1496,13 @@ int wlan_socket_ioctl (mod_network_socket_obj_t *s, mp_uint_t request, mp_uint_t
14971496

14981497
// check return of select
14991498
if (FD_ISSET(sd, &rfds)) {
1500-
ret |= MP_IOCTL_POLL_RD;
1499+
ret |= MP_STREAM_POLL_RD;
15011500
}
15021501
if (FD_ISSET(sd, &wfds)) {
1503-
ret |= MP_IOCTL_POLL_WR;
1502+
ret |= MP_STREAM_POLL_WR;
15041503
}
15051504
if (FD_ISSET(sd, &xfds)) {
1506-
ret |= MP_IOCTL_POLL_HUP;
1505+
ret |= MP_STREAM_POLL_HUP;
15071506
}
15081507
} else {
15091508
*_errno = EINVAL;

cc3200/mods/pybuart.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
#include "uart.h"
4747
#include "pybuart.h"
4848
#include "mpirq.h"
49-
#include "pybioctl.h"
5049
#include "pybsleep.h"
5150
#include "mpexception.h"
5251
#include "py/mpstate.h"
@@ -630,14 +629,14 @@ STATIC mp_uint_t pyb_uart_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t a
630629
mp_uint_t ret;
631630
uart_check_init(self);
632631

633-
if (request == MP_IOCTL_POLL) {
632+
if (request == MP_STREAM_POLL) {
634633
mp_uint_t flags = arg;
635634
ret = 0;
636-
if ((flags & MP_IOCTL_POLL_RD) && uart_rx_any(self)) {
637-
ret |= MP_IOCTL_POLL_RD;
635+
if ((flags & MP_STREAM_POLL_RD) && uart_rx_any(self)) {
636+
ret |= MP_STREAM_POLL_RD;
638637
}
639-
if ((flags & MP_IOCTL_POLL_WR) && MAP_UARTSpaceAvail(self->reg)) {
640-
ret |= MP_IOCTL_POLL_WR;
638+
if ((flags & MP_STREAM_POLL_WR) && MAP_UARTSpaceAvail(self->reg)) {
639+
ret |= MP_STREAM_POLL_WR;
641640
}
642641
} else {
643642
*errcode = EINVAL;

extmod/moduselect.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@
3232
#include "py/runtime.h"
3333
#include "py/obj.h"
3434
#include "py/objlist.h"
35+
#include "py/stream.h"
3536
#include "py/mperrno.h"
3637
#include "py/mphal.h"
37-
#include "pybioctl.h"
3838

3939
// Flags for poll()
4040
#define FLAG_ONESHOT (1)
@@ -87,7 +87,7 @@ STATIC mp_uint_t poll_map_poll(mp_map_t *poll_map, mp_uint_t *rwx_num) {
8787

8888
poll_obj_t *poll_obj = (poll_obj_t*)poll_map->table[i].value;
8989
int errcode;
90-
mp_int_t ret = poll_obj->ioctl(poll_obj->obj, MP_IOCTL_POLL, poll_obj->flags, &errcode);
90+
mp_int_t ret = poll_obj->ioctl(poll_obj->obj, MP_STREAM_POLL, poll_obj->flags, &errcode);
9191
poll_obj->flags_ret = ret;
9292

9393
if (ret == -1) {
@@ -99,13 +99,13 @@ STATIC mp_uint_t poll_map_poll(mp_map_t *poll_map, mp_uint_t *rwx_num) {
9999
// object is ready
100100
n_ready += 1;
101101
if (rwx_num != NULL) {
102-
if (ret & MP_IOCTL_POLL_RD) {
102+
if (ret & MP_STREAM_POLL_RD) {
103103
rwx_num[0] += 1;
104104
}
105-
if (ret & MP_IOCTL_POLL_WR) {
105+
if (ret & MP_STREAM_POLL_WR) {
106106
rwx_num[1] += 1;
107107
}
108-
if ((ret & ~(MP_IOCTL_POLL_RD | MP_IOCTL_POLL_WR)) != 0) {
108+
if ((ret & ~(MP_STREAM_POLL_RD | MP_STREAM_POLL_WR)) != 0) {
109109
rwx_num[2] += 1;
110110
}
111111
}
@@ -141,9 +141,9 @@ STATIC mp_obj_t select_select(uint n_args, const mp_obj_t *args) {
141141
// merge separate lists and get the ioctl function for each object
142142
mp_map_t poll_map;
143143
mp_map_init(&poll_map, rwx_len[0] + rwx_len[1] + rwx_len[2]);
144-
poll_map_add(&poll_map, r_array, rwx_len[0], MP_IOCTL_POLL_RD, true);
145-
poll_map_add(&poll_map, w_array, rwx_len[1], MP_IOCTL_POLL_WR, true);
146-
poll_map_add(&poll_map, x_array, rwx_len[2], MP_IOCTL_POLL_ERR | MP_IOCTL_POLL_HUP, true);
144+
poll_map_add(&poll_map, r_array, rwx_len[0], MP_STREAM_POLL_RD, true);
145+
poll_map_add(&poll_map, w_array, rwx_len[1], MP_STREAM_POLL_WR, true);
146+
poll_map_add(&poll_map, x_array, rwx_len[2], MP_STREAM_POLL_ERR | MP_STREAM_POLL_HUP, true);
147147

148148
mp_uint_t start_tick = mp_hal_ticks_ms();
149149
rwx_len[0] = rwx_len[1] = rwx_len[2] = 0;
@@ -163,13 +163,13 @@ STATIC mp_obj_t select_select(uint n_args, const mp_obj_t *args) {
163163
continue;
164164
}
165165
poll_obj_t *poll_obj = (poll_obj_t*)poll_map.table[i].value;
166-
if (poll_obj->flags_ret & MP_IOCTL_POLL_RD) {
166+
if (poll_obj->flags_ret & MP_STREAM_POLL_RD) {
167167
((mp_obj_list_t*)list_array[0])->items[rwx_len[0]++] = poll_obj->obj;
168168
}
169-
if (poll_obj->flags_ret & MP_IOCTL_POLL_WR) {
169+
if (poll_obj->flags_ret & MP_STREAM_POLL_WR) {
170170
((mp_obj_list_t*)list_array[1])->items[rwx_len[1]++] = poll_obj->obj;
171171
}
172-
if ((poll_obj->flags_ret & ~(MP_IOCTL_POLL_RD | MP_IOCTL_POLL_WR)) != 0) {
172+
if ((poll_obj->flags_ret & ~(MP_STREAM_POLL_RD | MP_STREAM_POLL_WR)) != 0) {
173173
((mp_obj_list_t*)list_array[2])->items[rwx_len[2]++] = poll_obj->obj;
174174
}
175175
}
@@ -195,7 +195,7 @@ STATIC mp_obj_t poll_register(uint n_args, const mp_obj_t *args) {
195195
if (n_args == 3) {
196196
flags = mp_obj_get_int(args[2]);
197197
} else {
198-
flags = MP_IOCTL_POLL_RD | MP_IOCTL_POLL_WR;
198+
flags = MP_STREAM_POLL_RD | MP_STREAM_POLL_WR;
199199
}
200200
poll_map_add(&self->poll_map, &args[1], 1, flags, false);
201201
return mp_const_none;
@@ -300,10 +300,10 @@ STATIC const mp_map_elem_t mp_module_select_globals_table[] = {
300300
{ MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_uselect) },
301301
{ MP_OBJ_NEW_QSTR(MP_QSTR_select), (mp_obj_t)&mp_select_select_obj },
302302
{ MP_OBJ_NEW_QSTR(MP_QSTR_poll), (mp_obj_t)&mp_select_poll_obj },
303-
{ MP_OBJ_NEW_QSTR(MP_QSTR_POLLIN), MP_OBJ_NEW_SMALL_INT(MP_IOCTL_POLL_RD) },
304-
{ MP_OBJ_NEW_QSTR(MP_QSTR_POLLOUT), MP_OBJ_NEW_SMALL_INT(MP_IOCTL_POLL_WR) },
305-
{ MP_OBJ_NEW_QSTR(MP_QSTR_POLLERR), MP_OBJ_NEW_SMALL_INT(MP_IOCTL_POLL_ERR) },
306-
{ MP_OBJ_NEW_QSTR(MP_QSTR_POLLHUP), MP_OBJ_NEW_SMALL_INT(MP_IOCTL_POLL_HUP) },
303+
{ MP_OBJ_NEW_QSTR(MP_QSTR_POLLIN), MP_OBJ_NEW_SMALL_INT(MP_STREAM_POLL_RD) },
304+
{ MP_OBJ_NEW_QSTR(MP_QSTR_POLLOUT), MP_OBJ_NEW_SMALL_INT(MP_STREAM_POLL_WR) },
305+
{ MP_OBJ_NEW_QSTR(MP_QSTR_POLLERR), MP_OBJ_NEW_SMALL_INT(MP_STREAM_POLL_ERR) },
306+
{ MP_OBJ_NEW_QSTR(MP_QSTR_POLLHUP), MP_OBJ_NEW_SMALL_INT(MP_STREAM_POLL_HUP) },
307307
};
308308

309309
STATIC MP_DEFINE_CONST_DICT(mp_module_select_globals, mp_module_select_globals_table);

py/stream.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@
4242
#define MP_STREAM_GET_DATA_OPTS (8) // Get data/message options
4343
#define MP_STREAM_SET_DATA_OPTS (9) // Set data/message options
4444

45+
// These poll ioctl values are compatible with Linux
46+
#define MP_STREAM_POLL_RD (0x0001)
47+
#define MP_STREAM_POLL_WR (0x0004)
48+
#define MP_STREAM_POLL_ERR (0x0008)
49+
#define MP_STREAM_POLL_HUP (0x0010)
50+
4551
// Argument structure for MP_STREAM_SEEK
4652
struct mp_stream_seek_t {
4753
mp_off_t offset;

stmhal/can.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@
3232
#include "py/objtuple.h"
3333
#include "py/runtime.h"
3434
#include "py/gc.h"
35+
#include "py/stream.h"
3536
#include "py/mperrno.h"
3637
#include "py/mphal.h"
3738
#include "bufhelper.h"
3839
#include "can.h"
39-
#include "pybioctl.h"
4040
#include "irq.h"
4141

4242
#if MICROPY_HW_ENABLE_CAN
@@ -807,16 +807,16 @@ STATIC MP_DEFINE_CONST_DICT(pyb_can_locals_dict, pyb_can_locals_dict_table);
807807
mp_uint_t can_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) {
808808
pyb_can_obj_t *self = self_in;
809809
mp_uint_t ret;
810-
if (request == MP_IOCTL_POLL) {
810+
if (request == MP_STREAM_POLL) {
811811
mp_uint_t flags = arg;
812812
ret = 0;
813-
if ((flags & MP_IOCTL_POLL_RD)
813+
if ((flags & MP_STREAM_POLL_RD)
814814
&& ((__HAL_CAN_MSG_PENDING(&self->can, CAN_FIFO0) != 0)
815815
|| (__HAL_CAN_MSG_PENDING(&self->can, CAN_FIFO1) != 0))) {
816-
ret |= MP_IOCTL_POLL_RD;
816+
ret |= MP_STREAM_POLL_RD;
817817
}
818-
if ((flags & MP_IOCTL_POLL_WR) && (self->can.Instance->TSR & CAN_TSR_TME)) {
819-
ret |= MP_IOCTL_POLL_WR;
818+
if ((flags & MP_STREAM_POLL_WR) && (self->can.Instance->TSR & CAN_TSR_TME)) {
819+
ret |= MP_STREAM_POLL_WR;
820820
}
821821
} else {
822822
*errcode = MP_EINVAL;

stmhal/modnwcc3k.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
#include "pin.h"
4242
#include "genhdr/pins.h"
4343
#include "spi.h"
44-
#include "pybioctl.h"
4544

4645
#include "hci.h"
4746
#include "socket.h"
@@ -354,7 +353,7 @@ STATIC int cc3k_socket_settimeout(mod_network_socket_obj_t *socket, mp_uint_t ti
354353

355354
STATIC int cc3k_socket_ioctl(mod_network_socket_obj_t *socket, mp_uint_t request, mp_uint_t arg, int *_errno) {
356355
mp_uint_t ret;
357-
if (request == MP_IOCTL_POLL) {
356+
if (request == MP_STREAM_POLL) {
358357
mp_uint_t flags = arg;
359358
ret = 0;
360359
int fd = socket->u_state;
@@ -366,19 +365,19 @@ STATIC int cc3k_socket_ioctl(mod_network_socket_obj_t *socket, mp_uint_t request
366365
FD_ZERO(&xfds);
367366

368367
// set fds if needed
369-
if (flags & MP_IOCTL_POLL_RD) {
368+
if (flags & MP_STREAM_POLL_RD) {
370369
FD_SET(fd, &rfds);
371370

372371
// A socked that just closed is available for reading. A call to
373372
// recv() returns 0 which is consistent with BSD.
374373
if (cc3k_get_fd_closed_state(fd)) {
375-
ret |= MP_IOCTL_POLL_RD;
374+
ret |= MP_STREAM_POLL_RD;
376375
}
377376
}
378-
if (flags & MP_IOCTL_POLL_WR) {
377+
if (flags & MP_STREAM_POLL_WR) {
379378
FD_SET(fd, &wfds);
380379
}
381-
if (flags & MP_IOCTL_POLL_HUP) {
380+
if (flags & MP_STREAM_POLL_HUP) {
382381
FD_SET(fd, &xfds);
383382
}
384383

@@ -396,13 +395,13 @@ STATIC int cc3k_socket_ioctl(mod_network_socket_obj_t *socket, mp_uint_t request
396395

397396
// check return of select
398397
if (FD_ISSET(fd, &rfds)) {
399-
ret |= MP_IOCTL_POLL_RD;
398+
ret |= MP_STREAM_POLL_RD;
400399
}
401400
if (FD_ISSET(fd, &wfds)) {
402-
ret |= MP_IOCTL_POLL_WR;
401+
ret |= MP_STREAM_POLL_WR;
403402
}
404403
if (FD_ISSET(fd, &xfds)) {
405-
ret |= MP_IOCTL_POLL_HUP;
404+
ret |= MP_STREAM_POLL_HUP;
406405
}
407406
} else {
408407
*_errno = MP_EINVAL;

stmhal/pybioctl.h

Lines changed: 0 additions & 8 deletions
This file was deleted.

stmhal/uart.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
#include "py/mperrno.h"
3535
#include "py/mphal.h"
3636
#include "uart.h"
37-
#include "pybioctl.h"
3837
#include "irq.h"
3938

4039
//TODO: Add UART7/8 support for MCU_SERIES_F7
@@ -901,14 +900,14 @@ STATIC mp_uint_t pyb_uart_write(mp_obj_t self_in, const void *buf_in, mp_uint_t
901900
STATIC mp_uint_t pyb_uart_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) {
902901
pyb_uart_obj_t *self = self_in;
903902
mp_uint_t ret;
904-
if (request == MP_IOCTL_POLL) {
903+
if (request == MP_STREAM_POLL) {
905904
mp_uint_t flags = arg;
906905
ret = 0;
907-
if ((flags & MP_IOCTL_POLL_RD) && uart_rx_any(self)) {
908-
ret |= MP_IOCTL_POLL_RD;
906+
if ((flags & MP_STREAM_POLL_RD) && uart_rx_any(self)) {
907+
ret |= MP_STREAM_POLL_RD;
909908
}
910-
if ((flags & MP_IOCTL_POLL_WR) && __HAL_UART_GET_FLAG(&self->uart, UART_FLAG_TXE)) {
911-
ret |= MP_IOCTL_POLL_WR;
909+
if ((flags & MP_STREAM_POLL_WR) && __HAL_UART_GET_FLAG(&self->uart, UART_FLAG_TXE)) {
910+
ret |= MP_STREAM_POLL_WR;
912911
}
913912
} else {
914913
*errcode = MP_EINVAL;

stmhal/usb.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@
4040
#include "py/mperrno.h"
4141
#include "bufhelper.h"
4242
#include "usb.h"
43-
#include "pybioctl.h"
4443

4544
#if defined(USE_USB_FS)
4645
#define USB_PHY_ID USB_PHY_FS_ID
@@ -502,14 +501,14 @@ STATIC mp_uint_t pyb_usb_vcp_write(mp_obj_t self_in, const void *buf, mp_uint_t
502501

503502
STATIC mp_uint_t pyb_usb_vcp_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) {
504503
mp_uint_t ret;
505-
if (request == MP_IOCTL_POLL) {
504+
if (request == MP_STREAM_POLL) {
506505
mp_uint_t flags = arg;
507506
ret = 0;
508-
if ((flags & MP_IOCTL_POLL_RD) && USBD_CDC_RxNum() > 0) {
509-
ret |= MP_IOCTL_POLL_RD;
507+
if ((flags & MP_STREAM_POLL_RD) && USBD_CDC_RxNum() > 0) {
508+
ret |= MP_STREAM_POLL_RD;
510509
}
511-
if ((flags & MP_IOCTL_POLL_WR) && USBD_CDC_TxHalfEmpty()) {
512-
ret |= MP_IOCTL_POLL_WR;
510+
if ((flags & MP_STREAM_POLL_WR) && USBD_CDC_TxHalfEmpty()) {
511+
ret |= MP_STREAM_POLL_WR;
513512
}
514513
} else {
515514
*errcode = MP_EINVAL;
@@ -632,11 +631,11 @@ STATIC MP_DEFINE_CONST_DICT(pyb_usb_hid_locals_dict, pyb_usb_hid_locals_dict_tab
632631

633632
STATIC mp_uint_t pyb_usb_hid_ioctl(mp_obj_t self_in, mp_uint_t request, mp_uint_t arg, int *errcode) {
634633
mp_uint_t ret;
635-
if (request == MP_IOCTL_POLL) {
634+
if (request == MP_STREAM_POLL) {
636635
mp_uint_t flags = arg;
637636
ret = 0;
638-
if ((flags & MP_IOCTL_POLL_WR) && USBD_HID_CanSendReport(&hUSBDDevice)) {
639-
ret |= MP_IOCTL_POLL_WR;
637+
if ((flags & MP_STREAM_POLL_WR) && USBD_HID_CanSendReport(&hUSBDDevice)) {
638+
ret |= MP_STREAM_POLL_WR;
640639
}
641640
} else {
642641
*errcode = MP_EINVAL;

0 commit comments

Comments
 (0)