Quantcast
Channel: 蜗窝科技
Browsing latest articles
Browse All 13 View Live

Image may be NSFW.
Clik here to view.

Concurrency Managed Workqueue之(二):CMWQ概述

一、前言 一种新的机制出现的原因往往是为了解决实际的问题,虽然linux kernel中已经提供了workqueue的机制,那么为何还要引入cmwq呢?也就是说:旧的workqueue机制存在什么样的问题?在新的cmwq又是如何解决这些问题的呢?它接口是如何呈现的呢(驱动工程师最关心这个了)?如何兼容旧的驱动呢?本文希望可以解开这些谜题。 本文的代码来自linux kernel 4.0。...

View Article


Concurrency Managed Workqueue之(三):创建workqueue代码分析

一、前言 本文主要以__alloc_workqueue_key函数为主线,描述CMWQ中的创建一个workqueue实例的代码过程。   二、WQ_POWER_EFFICIENT的处理 __alloc_workqueue_key函数的一开始有如下的代码: if ((flags & WQ_POWER_EFFICIENT) && wq_power_efficient)...

View Article


Concurrency Managed Workqueue之(四):workqueue如何处理work

一、前言 本文主要讲述下面两部分的内容: 1、将work挂入workqueue的处理过程 2、如何处理挂入workqueue的work   二、用户将一个work挂入workqueue 1、queue_work_on函数 使用workqueue机制的模块可以调用queue_work_on(有其他变种的接口,这里略过,其实思路是一致的)将一个定义好的work挂入workqueue,具体代码如下:...

View Article

中断唤醒系统流程

1) 设备唤醒cpu之后是立即跳转中断向量表指定的位置吗?如果不是,那么是什么时候才会跳转呢? 2) 已经跳转到中断服务函数开始执行代码,后续就会调用你注册的中断handle 代码吗?如果不是,那中断服务函数做什么准备呢?而你注册的中断handle又会在什么时候才开始执行呢? 3) 假如register_thread_irq方式注册的threaded...

View Article

Concurrency Managed Workqueue之(一):workqueue的基本概念

workqueue是一个驱动工程师常用的工具,在旧的内核中(指2.6.36之前的内核版本)workqueue代码比较简单(大概800行),在2.6.36内核版本中引入了CMWQ(Concurrency Managed Workqueue),workqueue.c...

View Article

Browsing latest articles
Browse All 13 View Live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>