是否有以前版本的 tty_ldisc_ops.ioctl() 也需要文件参数?

问题描述 投票:0回答:1

我正在移植一些将

tty_ldisc_ops.ioctl()
定义为的代码:

static int ...ldisc_ioctl(struct tty_struct *tty, struct file *file, unsigned int cmd, unsigned long arg)

但是当前规格是:

static int ...ldisc_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg)

“文件”参数发生了什么?我寻找更改日志和来源。


我从(https://mirrors.edge.kernel.org/pub/linux/kernel/v2.1/)随机获取了一个旧内核。

int n_tty_ioctl(struct tty_struct * tty, struct file * file,
                       unsigned int cmd, unsigned long arg) { ... tty->driver.ioctl(tty, file, cmd, arg); ...

tty.h, struct tty_struct { ... struct tty_driver driver; ...

tty_driver.h: struct tty_driver { ... int  (*ioctl)(struct tty_struct *tty, struct file * file, unsigned int cmd, unsigned long arg); ...

然后小路就变冷了。

c linux-kernel tty ioctl
1个回答
0
投票

通过浏览 Linux 内核项目的 Git 历史记录,您可能会发现 v5.17 是第一个被删除的文件。 这次提交使得这一切发生了。根据它,您需要查找以前的补丁,其中一个似乎解释了为什么这样做:

tty_mode_ioctl 中“file”参数的唯一用户是 BUG_ON 检查。 如果它对任何人来说都没有崩溃过,那么通过这个就有点过分了 tty_mode_ioctl 参数仅用于此检查。

所以,换句话说,它从未用于与 tty 层相关的任何内容,因此已被删除。

© www.soinside.com 2019 - 2024. All rights reserved.