lk中的threadlocal 变量

lk中提供了threadlocal 变量来保存和thread相关联的变量,在new thread的时候可以从父进程继承threadlocal变量 在thread结构体变量中是通过tls这个uint32的数组来保存threadlocal 变量的 typedef struct thread { ...

2016-08-31 23:16:34

阅读数:292

评论数:0

lk对临界区的操作

在lk中当要进入临界区的时候一般会用enter_critical_section 和 exit_critical_section来保护 static inline __ALWAYS_INLINE void enter_critical_section(void) { critical_sec...

2016-08-30 09:45:56

阅读数:410

评论数:0

lk中的timer

kmain中会调用timer_init来初始timer_queue,并通过 void timer_init(void) { list_initialize(&timer_queue); /* register for a periodic timer tick */ pl...

2016-08-29 20:08:22

阅读数:612

评论数:0

lk 之dpc

lk 中实现了让一组函数串行执行,但不需要新建thread的方式,如果用thread的方式就要用mutex 来同步 这种机制就是dpc,dpc的code都在dpc.c中 我们先看看dpc的init void dpc_init(void) { event_init(&dpc_eve...

2016-08-29 19:15:42

阅读数:662

评论数:0

binderservice

一般跨进程的service,我们将其注册为binderservice xref: /frameworks/base/services/core/java/com/android/server/BatteryService.java  publishBinderService("...

2016-08-29 17:50:35

阅读数:398

评论数:0

LocalService

为了提升通信的效率,google将service分成binder service 和 local service。 我们先来看local service的实现。 如果service只在本进程使用,则可以将这个service 发布为localservice。避免进程间通信 xref: /fra...

2016-08-29 16:46:59

阅读数:2320

评论数:0

lk中的idle thread

和kernel中的start_kernel一样最后会编程idle,lk中kmain最后也是调用thread_become_idle 将自己编程idle thread void thread_become_idle(void) { thread_set_name("idle");...

2016-08-29 16:20:26

阅读数:488

评论数:0

lk中中断的处理flow

在li的crt0.s 中会定义中断的入口。例如如果是irq中断会调用arm_irq _start: b reset b arm_undefined b arm_syscall b arm_prefetch_abort b arm_data_abort b arm_reserved ...

2016-08-29 15:53:53

阅读数:405

评论数:0

Creating Swipe Views with Tabs

可以使用viewpager新建一个swipe views 首选在xml中增加viewpager组件     xmlns:android="http://schemas.android.com/apk/res/android"     android:id=&quo...

2016-08-29 15:34:19

阅读数:380

评论数:0

printk_time 中时间戳的获取

可以在用prink打的log前面加上时间戳,但这个时间戳是怎么得到的呢? 我们知道printk-> vprintk_emit 1608 asmlinkage int vprintk_emit(int facility, int level, 1609                  ...

2016-08-29 14:14:52

阅读数:1875

评论数:0

printk_time

可以通过uboot 添加time 或者打开CONFIG_PRINTK_TIME 来让通过prink 或者do_syslog 打印log的时候显示时间戳 1044 static bool printk_time = IS_ENABLED(CONFIG_PRINTK_TIME); 1045...

2016-08-29 14:05:41

阅读数:525

评论数:0

register_console

前面讲过prink中最后会调用call_console_drivers 来将log通过uart 输出。 在这个函数中1458行可见是调用con->write下输出log的 1434 static void call_console_drivers(int level, 1435    ...

2016-08-29 13:46:01

阅读数:971

评论数:0

lk中的flashlayout

在lk中通过如下方式得到flashlayout的信息 ptable = flash_get_ptable(); 我们看看flash_get_ptable的实现 struct ptable *flash_get_ptable(void) { return flash_ptable; } ...

2016-08-29 11:37:45

阅读数:667

评论数:0

lk boot bootimg

在aboot.c 中 APP_START(aboot) .init = aboot_init, APP_END 会为aboot_init new 一个thread(前面已经讲过了) void aboot_init(const struct app_descriptor *app) { ...

2016-08-29 11:15:59

阅读数:519

评论数:0

no_console_suspend

通过uboot 可以传递给kernel一个no_console_suspend的参数。 这个参数的意思是,在suspend的时候console 不进行suspend,否则console suspend之后其他driver在suspend 过程中印的log都显示不出来,因此加这个参数一般用于调试s...

2016-08-26 17:53:35

阅读数:1700

评论数:0

repeatingalarm

这个例子在如下路径中. https://developer.android.com/samples/RepeatingAlarm/index.html 先看manifest。           android:label="@string/app_name"...

2016-08-26 16:46:48

阅读数:356

评论数:0

scheduleJob

首先看AndroidManifest文件           android:icon="@drawable/ic_launcher"         android:label="@string/app_name"         android:th...

2016-08-26 16:16:23

阅读数:959

评论数:0

Loading Data in the Background 之Handling the Results

为了显示cursor的数据,一般会用view + adapterView的方式。然后在onLoadFinished()方法中更新adapter 如下所示: public String[] mFromColumns = {     DataProviderContract.IMAGE_...

2016-08-26 14:57:13

阅读数:389

评论数:0

Loading Data in the Background 之Running a Query with a CursorLoader

Cursorloader 执行异步的查询contentprovider 要在Activity 中使用CursorLoader,需要实现LoaderCallbacks接口 public class PhotoThumbnailFragment extends FragmentActivity i...

2016-08-26 14:51:29

阅读数:365

评论数:0

lk中如何决定下一个要运行的thread的?

lk中是根据优先级来选择下一个要运行的thread,如果是同一个优先级就按注册时候的顺序执行。 下来我们看看code中的实现. lk中thread 切换时在thread_resched 中进行的,这个可以会在timer函数的interrupt callback函数中调用,或者 某个t...

2016-08-26 14:11:34

阅读数:493

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭