AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-648018

Andrey Pro's questions

Martin Hope
Andrey Pro
Asked: 2025-04-19 21:34:07 +0800 CST

Linux 内核中的停放线程是什么?

  • 7

在 Linux 内核中,停驻线程是什么意思?是指处于TASK_PARKED“停驻”状态的线程吗?

TASK_INTERRUPTIBLE此状态与和有何不同TASK_UNINTERRUPTIBLE?

线程可以从哪种状态更快地被唤醒?一般来说,以及在特定情况下,如果用于等待:kthread_parkme / kthread_unpark而不是[s]wait_event_... / [s]wake_up_...]?

我知道 waitqueues 支持多个等待者,但我只对单个睡眠者/唤醒者对感兴趣。

linux-kernel
  • 1 个回答
  • 83 Views
Martin Hope
Andrey Pro
Asked: 2025-03-09 05:52:39 +0800 CST

如何找出 API 更改的 Linux 内核版本?

  • 7

如何找出自哪个 Linux 版本以来内核 API 函数/宏可用,或者是否发生了重大变化(被删除、参数类型或数量的更改)。

例如,在查看的最新版本时,scatterlist.h我偶然发现了sg_alloc_table_from_pages_segment,它具有我的内核模块(驱动程序)所需的功能。然而,令我失望的是,该功能在内核模块开发的 5.10 版本中尚未提供,我必须找到一种解决方法。但我仍然希望支持未来的内核版本,以防我们进行升级。

通常,这种情况是用预处理器隔离来处理的

#if LINUX_VERSION_CODE >= KERNEL_VERSION(...)
/*Version-specific implementation*/
#endif

但为了应用此模式,我需要找到添加该函数的内核版本。手动扫描头文件的所有中间版本将是一项艰巨的任务。

linux-kernel
  • 2 个回答
  • 71 Views
Martin Hope
Andrey Pro
Asked: 2024-11-30 22:11:57 +0800 CST

如何在 Debian 11 上将 TigerVNC 升级到 1.12?

  • 7

我有一台运行 Debian 11 的开发机器,它目前是我们设备主机的标准环境。我使用 VNC(TigerVNC 服务器)从我的工作计算机远程访问它。问题是 Debian 11 附带的 TigerVNC 有一个非常烦人的错误,会干扰我的工作。

该错误早已修复,但是没有官方的反向移植,并且据我所知,Debian 11 的反向移植已经停止。

因此,解决问题的唯一方法是手动反向移植 TigerVNC。

我尝试遵循Faheem Mitha 的反向移植指南,因为它似乎是最适合这种情况的方法,需要特定于 Debian 的配置和构建。我设法进入第 4 步:

 debuild -uc -us
 dpkg-buildpackage -us -uc -ui
dpkg-buildpackage: info: source package tigervnc
dpkg-buildpackage: info: source version 1.12.0+dfsg-8~bpo11+1
dpkg-buildpackage: info: source distribution bullseye-backports
dpkg-buildpackage: info: source changed by 
 dpkg-source --before-build .
dpkg-buildpackage: info: host architecture amd64
dpkg-source: info: using options from tigervnc-1.12.0+dfsg/debian/source/options: --single-debian-patch --create-empty-orig
dpkg-checkbuilddeps: error: Unmet build dependencies: libxft-dev libxcursor-dev libxrandr-dev libxdamage-dev libwrap0-dev xorg-server-source (>= 2:21) xserver-xorg-dev appstream quilt bison flex x11proto-dev (>= 2021.5) libxcvt-dev libxfont-dev (>= 1:2.0.1) libxkbfile-dev (>= 1:0.99.1) libpciaccess-dev (>= 0.12.901) libgcrypt-dev libudev-dev (>= 151-3) libselinux1-dev (>= 2.0.80) libaudit-dev libdrm-dev (>= 2.4.107-5~) mesa-common-dev libunwind-dev libxmuu-dev (>= 1:0.99.1) libxrender-dev (>= 1:0.9.0) libxi-dev (>= 2:1.8) libxpm-dev (>= 1:3.5.3) libxaw7-dev (>= 1:0.99.1) libxmu-dev (>= 1:0.99.1) libxtst-dev (>= 1:0.99.1) libxres-dev (>= 1:0.99.1) libxfixes-dev (>= 1:3.0.0) libxv-dev libxinerama-dev libxshmfence-dev (>= 1.1) libepoxy-dev libegl-dev (>= 1.3.2) libgbm-dev (>= 10.2) libbsd-dev libdbus-1-dev (>= 1.0) libsystemd-dev
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: warning: (Use -d flag to override.)
debuild: fatal error at line 1182:
dpkg-buildpackage -us -uc -ui failed

sudo apt-get build-dep tigervnc-standalone-server=1.12.0+dfsg-8
Reading package lists... Done
Picking 'tigervnc' as source package instead of 'tigervnc-standalone-server'
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 builddeps:tigervnc : Depends: xorg-server-source (>= 2:21) but 2:1.20.11-1+deb11u14 is to be installed
                      Depends: x11proto-dev (>= 2021.5) but 2020.1-1 is to be installed
                      Depends: libxcvt-dev but it is not installable
                      Depends: libdrm-dev (>= 2.4.107-5~) but 2.4.104-1 is to be installed
                      Depends: libxi-dev (>= 2:1.8) but 2:1.7.10-1 is to be installed
E: Unable to correct problems, you have held broken packages.

但是,我不明白指南中应该如何处理未满足的依赖项。我应该降低 debian/control 中所需的版本吗?特别是,我该如何处理标记为可卸载的 libxcvt-dev?

debian
  • 1 个回答
  • 31 Views
Martin Hope
Andrey Pro
Asked: 2024-09-20 07:00:51 +0800 CST

当驱动程序不提供实现时,为什么 lseek() 会返回 ESPIPE?

  • 6

Linux 设备驱动程序第三版指出:

如果设备操作中缺少 llseek 方法,则内核中的默认实现通过修改 filp->f_pos 来执行查找

但是我有一个字符设备,其驱动程序没有实现 lseek。以下是此设备类型的文件操作定义: https://github.com/Xilinx/dma_ip_drivers/blob/master/XDMA/linux-kernel/xdma/cdev_ctrl.c

但尝试在此设备上执行 lseek 时会返回 ESPIPE:

#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <errno.h>
int main(int argc, char** argv) {
    uint32_t val=0x12345678;
    int fid=open("/dev/xdma0_user", O_RDWR);
    off_t lseek_ret=lseek(fid, 0x8ul, SEEK_SET);
    if (lseek_ret <0)
        fprintf(stderr, "Seek result: %d, errno: %s (%d)\n", lseek_ret, strerror(errno), errno );
    unsigned int c=write(fid, &val, sizeof(val));
    printf("written %u bytes\n", c);
    close(fid);
    return (0);
}

输出:

Seek result: -1, errno: Illegal seek (29)
written 4 bytes

我不明白这是怎么发生的。它不可能来自驱动程序:ESPIPE 甚至没有在任何地方提及,因此它一定来自内核,这与上面的引述相矛盾。

默认行为是否已被改变?能否以某种方式进行配置?如何查看内核实际执行的操作(理想情况下是源代码)?

内核版本是 5.10(Debian 11)。

linux-kernel
  • 1 个回答
  • 29 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve