Articles of linux kernel

Android 4.0内核源代码?

我在哪里可以获得Android 4.0(Ice Cream Sandwich) 内核源代码? 虽然这可能是一些人之前提出过的愚蠢问题,但我似乎无法在任何地方find合适的答案,因为: 谷歌决定真正有用,并将android.kernel.org重定向到http://source.android.com/source/downloading.html ,其中包括除内核之外的Android的每一部分。 我不明白这背后的逻辑。 git clone https://android.googlesource.com/kernel/common.git做了一些奇怪的事情并创建了一个巨大的(600 MB +). .git文件夹而没有创建源树。 关于git repo, 我没有给出两个问题, 我只需要源代码树 。 GitHub上的所有内核分支都非常过时。

SELinux规则适用于Android中的sysfs中的i2c文件

我为我的一个I2C设备创建了内核驱动程序作为可加载模块。 驱动程序通过new_device文件(/sys/devices/i2c/i2c-0/new_device)实例化在I2C对应文件夹(/sys/devices/i2c/i2c-0/0-0008/)下创建少量sysfs文件。 Lollipop强制执行SELinux所以我需要为需要访问设备的sysfs文件的应用程序创建规则。 主要是系统应用程序(它们属于Android SELinux中platform_app的定义)。 问题是不允许任何应用程序域中的应用程序写入sysfs文件: neverallow { appdomain -bluetooth -nfc } sysfs:dir_file_class_set write; 所以我决定专门为我的设备创建文件上下文: file_context: /sys/devices/i2c-0/0-0008(/.*)? u:object_r:sysfs_mydeviceic:s0 结果很有趣:默认的驱动程序文件和文件夹(如name和uevent等)获取正确的上下文,但不是由I2C驱动程序的sysfs部分创建的文件: root@android:/sys/devices/i2c-0/0-0008 # ls -Z –w–w–w- root root u:object_r:sysfs:s0 data lrwxrwxrwx root root u:object_r:sysfs_mydeviceic:s0 driver -> ../../../bus/i2c/drivers/mydevice -rw-rw-rw- root root u:object_r:sysfs:s0 locked -r–r–r– root root u:object_r:sysfs_mydeviceic:s0 modalias -r–r–r– root root u:object_r:sysfs_mydeviceic:s0 name drwxr-xr-x root root u:object_r:sysfs_mydeviceic:s0 power […]

墓碑如何在android-kernel中工作

mkdir /data/tombstones 0771 system system symlink /data/tombstones /tombstones mkdir /tombstones/mdm 0771 system system mkdir /tombstones/modem 0771 system system mkdir /tombstones/lpass 0771 system system # For firmwares mkdir /firmware_radio 0771 system system mkdir /firmware_q6 0771 system system mkdir /firmware_dsps 0771 system system mkdir /vendor 0771 system system mkdir /vendor/firmware 0771 system system devwait emmc@radio mount vfat […]

在GPIO上中断唤醒Android手机

在Android开发板上,我试图根据GPIO上收到的中断唤醒AP,任何人都可以帮我这个吗? 我对此的理解是: 我们需要创建一个输入设备,并根据收到的中断向该设备更新事件。 然后从应用程序我相信操作系统将发送事件发生通知,然后我们需要使用唤醒锁唤醒AP。 如果我的理解是正确的,请告诉我? 如果是,那么你能告诉我需要注册哪种输入设备(EV_PWR,EV_KEY ..),应用程序将如何获得通知,我们可以从驱动程序中唤醒AP吗?

检测插入的USB设备

我想知道,系统的哪个部分负责检测USB端口中的插入设备 它可能是USB主机端口,因此插入的设备将被视为USB客户端(因此端口所有者是主机), 或者它可能是USB客户端端口,因此插入的设备将被视为USB主机(因此端口所有者是客户端) 我感兴趣的是系统实际检测到(通过改变电阻)插入某些东西,并根据信号来自哪个端口(主机端口或客户端端口),主机端口驱动程序或部署客户端端口驱动程序 我想知道,HOW系统根据“插入”事件获取此驱动程序或该驱动程序 我应该在哪里寻找? 在USB核心可能吗?

使用CLOCK_MONOTONIC的Android(Linux)正常运行时间

根据Android Developer Reference, uptimeMillis()返回自启动以来的毫秒数, 不计入深度睡眠所花费的时间 。 我在我的代码中检查了uptimeMillis()的实现,它大致是这样的 – struct timespec t; t.tv_sec = t.tv_nsec = 0; clock_gettime(CLOCK_MONOTONIC, &t); return (int64_t)(t.tv_sec)*1000000000LL + t.tv_nsec; 据我所知, CLOCK_MONOTONIC从一些未指定的点 CLOCK_MONOTONIC计算,包括睡眠时间。 以下是我的疑惑 – 如果CLOCK_MONOTONIC包含睡眠时间, uptimeMillis()如何不考虑它? 如果我的理解是错误的并且CLOCK_MONOTONIC不考虑睡眠,那么我应该使用什么来获得系统正常运行时间,包括睡眠? 什么是深度睡眠? CPU闲置是否称为深度睡眠? Linux中未指定点的价值是多少? 你可以在这个时钟启动的代码中指出吗?

Linux OS和Mobile OS之间的根本区别(android)

嗨,我试图找出移动设备操作系统与台式机相比有何不同之处。 特别是内存管理,调度等。 我知道移动操作系统必须要做其他一些事情,比如电源管理,并担心更小的内存容量。 有没有人有任何好的资源来了解移动操作系统与其桌面版本的技术差异,也许特别是关于Android操作系统?

如何同步内核时间和logcat时间?

我正在开发基于Linux内核的Android手机。 我使用kmsg作为内核日志,使用adb logcat -v time作为平台日志。 问题是内核日志显示时间从0.000000 ,logcat从系统时间开始显示(例如,如果手机上的时间是10.43.00,它将显示此时的第一个日志) 现在我无法比较这2个日志中的事件,因为时基(参考)不同。 任何人都可以指出如何同步这两次?

如何在linux内核中定义和触发我自己的新softirq?

我想在linux内核中创建自己的softirq。 这是正确的方法: 在模块的init中,我想触发softirq ,我将添加一个调用: 394 void open_softirq(int nr, void (*action)(struct softirq_action *)) 395 { 396 softirq_vec[nr].action = action; 397 } 在片段中我想提高softirq我将添加一个对raise_softirq函数的调用: 379 void raise_softirq(unsigned int nr) 380 { 381 unsigned long flags; 382 383 local_irq_save(flags); 384 raise_softirq_irqoff(nr); 385 local_irq_restore(flags); 386 } 并添加我的新softirq : 411 /* PLEASE, avoid to allocate new softirqs, if you need not […]

如何编写一个Android应用程序来进行sysfs读/写。

我想编写一个带有UI按钮读/写的Android应用程序,它可以执行sysfs read或sysfs write 。 我find了java.io.RandomAccessFile的以下示例代码。 package com.tutorialspoint; import java.io.*; public class RandomAccessFileDemo { public static void main(String[] args) { try { // create a new RandomAccessFile with filename test RandomAccessFile raf = new RandomAccessFile(“c:/test.txt”, “rw”); // write something in the file raf.writeUTF(“Hello World”); // set the file pointer at 0 position raf.seek(0); // read the […]