因为访问可编程中断控制器(PIC)是相对较慢的操作,需要访问I/O总线来改变中断请求级(IRQL)的硬件抽象层(HAL),比如为了访问中断控制器(PIC)和32位高级配置电源接口(ACPI)系统,实现了一个性能优化 ,谓之延迟中断请求级(lazy IRQL),来尽量避免可编程中断控制器(PIC)访问。当中断请求级(IRQL)上升以后,硬件抽象层(HAL)在内部记录该中断请求级(IRQL)而不是来改变中断屏蔽(interrupt mask)。如果一个低优先级的中断随之而来,硬件抽象层(HAL)为前面的中断设置合适的中断屏蔽(interrupt mask),也就是实实在在的提升中断请求级(IRQL),从而延迟这个低优先级的中断直到中断请求级(IRQL)降低。这样以来,当中断请求级(IRQL)升高时如果没有低优先级的中断发生,硬件抽象层(HAL)并不真正的去修改可编程中断控制器(PIC)。
windows内核函数命名的一般格式为:
<Prefix><Operation><Object>
Prefix指示导出该例程的组件,Operation指出对对象或资源做什么样的动作,Object标示操作的对象或资源。比如ExAllocatePoolWithTag是一个执行体(Executive)例程,用来从分页池(paged pool)或非分页池(nonpaged pool)中分配内存。KeInitializeThread是一个分配并且设置内核线程对象(kernel thread object)的内核例程。
Read more…
gitweb是git的web接口,使用单向的http协议来发布git repositories。
通过gitweb可以来浏览任意版本的目录树,查看文件的内容,查看分支的log或shortlog,检视commits,commit信息以及指定commit所做的改变。gitweb可以产生RSS或Atom格式的feeds。可以获取任意指定版本的文件,如果允许,也可以下载指定版本的快照(snapshot)。也可以通过作者、提交者或者包含的某些提交信息来搜索commits。
gitweb的配置比较简单。
Debian默认将gitweb脚本gitweb.cgi安装到/usr/lib/cgi-bin/目录,使用的配置文件为/etc/gitweb.conf。
我将gitweb作为一个单独的虚拟主机来配置,gitweb的主目录为/home/${username}/public_html/pcware.cn/git,此处的${username}指代所在主机上的用户名,gitweb的主目录可以依个人喜好设置。
Read more…
KWinUI虽然很简洁,但仍然可以做不少事情。曾经有段时间,基于KWinUI写了一个换肤框架叫做KSkinX,现在就放出KSkinX的一个简单Demo。因为KSkinX还比较粗糙,比如滚动条的换肤尚未实现、标题栏按钮的处理还有待改进、实现的窗口组件还太少等原因,所以暂时还不开放源代码。
下面是这个换肤Demo的snapshots:
Demo程序从此下载。