小编Jai*_*ano的帖子

Linux内核配置设备的顺序是什么?

正如我在阅读Linux设备驱动程序第3版中与Linux设备模型相关的章节后所理解的,当配置新设备时,内核(2.6)或多或少遵循以下顺序:

  1. 设备已在驱动程序核心中注册(device_register()包括设备初始化)
  2. kobject已在设备模型中注册
  3. 它在sysfs中创建一个条目并引发一个hotplug事件
  4. 检查总线和驱动程序以查看哪个与设备匹配
  5. 探测
  6. 设备绑定到驱动程序

我的主要疑问是,在第1步中,何时device_register()调用以及应该在device结构中设置哪些字段?

它是由设备连接的总线调用的吗?代码中的任何例子?

我误解了什么吗?:)

linux kernel linux-device-driver linux-kernel hotplugging

8
推荐指数
1
解决办法
1819
查看次数

在Android上安装预构建的二进制文件:"not found"

我正在尝试在自定义Android映像中安装预构建的二进制文件.为此,我将其复制到一个新目录,prebuilt/android-arm/其中包含Android.mk与此类似的文件:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES := binary_name
LOCAL_MODULE := binary_name
LOCAL_MODULE_CLASS := EXECUTABLES
include $(BUILD_PREBUILT)
Run Code Online (Sandbox Code Playgroud)

因此,如果我运行make system_image binary_name,二进制文件将被复制到/bin/系统映像中.如果我运行模拟器,我可以看到二进制文件/system/bin.权限与其他可执行文件(-rwxr-xr-x)相同,并且根据file这是一个ARM二进制文件(ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), stripped).

但是当我在模拟器上运行它时,它说:

# binary_name
binary_name: not found
Run Code Online (Sandbox Code Playgroud)

我已经把它拉了过来,这就是我能看到的:

# strace binary_name
execve("/system/bin/binary_name", ["binary_name"], [/* 9 vars */]) = -1 ENOENT (No such file or directory)
write(2, "strace: exec", 12strace: exec)            = …
Run Code Online (Sandbox Code Playgroud)

linux android arm emulation libc

7
推荐指数
1
解决办法
9577
查看次数

如何在Windows CE控制台应用程序中处理Ctrl + C?

我需要在关闭应用程序之前进行一些清理,但SetConsoleCtrlHandler似乎不适用于Windows CE控制台应用程序.

Ctrl+C在Windows CE 6中是否有任何其他处理方法?

console winapi signals windows-ce

3
推荐指数
1
解决办法
2020
查看次数

使用OSGi HTTP服务启动Wicket Web应用程序

我正在尝试使用Felix实现的OSGi HTTP服务启动Wicket应用程序,因为我只是使用WicketServletwith applicationClassName参数注册服务:

props.put("applicationClassName", MainApplication.class.getName());
service = (HttpService)context.getService(httpReference);
service.registerServlet("/", new WicketServlet(), props, null);
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用Felix Whiteboard实现并将Web服务注册为Servlet一个:

props.put("alias", "/");
props.put("init.applicationClassName", MainApplication.class.getName());
registration = context.registerService(Servlet.class.getName(), new WicketServlet(), props);
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,当我使用Pax Runner和Felix(mvn package install pax:run -Dframework=felix -Dprofiles=log,config)部署它时失败,异常似乎与以下内容有关ClassLoader:

[Jetty HTTP Service] ERROR org.apache.felix.http.whiteboard - Failed to register servlet
org.apache.wicket.WicketRuntimeException: Unable to create application of class es.warp.sample.HTTPLocalGUI.MainApplication
....
....
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
....
....
Run Code Online (Sandbox Code Playgroud)

我试图导出捆绑中的所有内容,它也是如此.

最奇怪的是,如果我使用Equinox(mvn package install pax:run -Dframework=felix -Dprofiles=log,config …

osgi wicket httpservice embedded-jetty apache-felix

3
推荐指数
1
解决办法
3262
查看次数