|
@@ -115,6 +115,8 @@ static int serial_fops_close(struct dfs_fd *fd)
|
|
|
static int serial_fops_ioctl(struct dfs_fd *fd, int cmd, void *args)
|
|
|
{
|
|
|
rt_device_t device;
|
|
|
+ int flags = (int)(rt_base_t)args;
|
|
|
+ int mask = O_NONBLOCK | O_APPEND;
|
|
|
|
|
|
device = (rt_device_t)fd->data;
|
|
|
switch (cmd)
|
|
@@ -123,6 +125,11 @@ static int serial_fops_ioctl(struct dfs_fd *fd, int cmd, void *args)
|
|
|
break;
|
|
|
case FIONWRITE:
|
|
|
break;
|
|
|
+ case F_SETFL:
|
|
|
+ flags &= mask;
|
|
|
+ fd->flags &= ~mask;
|
|
|
+ fd->flags |= flags;
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
return rt_device_control(device, cmd, args);
|