- 博客(14)
- 收藏
- 关注
原创 Ubuntu 12.04使用Django + apache + mysql 开发web应用(一)
1.首先安装Django>apt-get install python-django在Shell命令行中输入python (回车)>>>import django (回车)只要不报错就证明Django可以使用了在当前目录下创建一个名为djproject的项目>/usr/bin/django-admin startpro
2013-01-31 11:15:16 3927
转载 linux seqlock & rcu 浅析
转自http://hi.baidu.com/_kouu/item/0b99dae513c2b4b52f140bd1在linux内核中,有很多同步机制。比较经典的有spin_lock(忙等待的锁)、mutex(互斥锁)、semaphore(信号量)、等。并且它们几乎都有对应的rw_XXX(读写锁),以便在能够区分读与写的情况下,让读操作相互不互斥(读写、写写依然互斥)。而seqlock和rc
2012-08-27 14:30:54 1058
原创 使用windbg查看PE文件格式
DOS Header & NT Header:Data Directory:kd> !dh 0040000Export Table:Import Table:
2012-08-15 14:10:13 1773
原创 Win64 Driver开发问题记录(三)
在32位driver中,获取SSDT表中的函数可根据以下固定的公式(64位下获取KeServiceDescriptorTable参见Win64 Driver开发问题记录二)SSDTTableBase=(PVOID)((PServiceDescriptorTableEntry)KeServiceDescriptorTable)->ServiceTableBase;ULONG_PTR
2012-07-06 09:50:21 1704
原创 Win64 Driver开发问题记录(二)
Win64 driver开发中遇到的第二个问题是如何通过SSDT表引用系统服务内核函数。MS在64系统中引入了全新的PatchGuard技术,使得原本在32位下可轻易hook的SSDT表在64位系统中无法再patch(会引发BSOD).当然,目前我并非是要hook SSDT表,而是需要使用到SSDT表中的一个未导出的系统服务内核函数。在32位driver中可以通过extern "C
2012-07-05 18:40:19 3498 3
原创 Win64 Driver开发问题记录(一)
Win64开发中所遇到的第一个问题是X64编绎器不支持内嵌式汇编(inline assembly),因此在源码中无法通过"__asm"来调用汇编指令。 解决的方法是将汇编的功能放入一个单独的.asm文件中,并封装成一些汇编子过程(函数),在C的源码中通过外部声明"extern"来调用这些汇编过程(函数)。 此外,在source文件中加入对.asm文件引用。一般的做法
2012-07-05 18:19:21 1203
原创 Windows kernel中实现Unicode和UTF-8之间的转换
Widnows kernel中不存在Unicdoe/UTF-8转换函数, 因此通过分析UTF-8编码表自己实现转换函数UTF-8编码字符理论上可以最多到6个字节长,然而16位BMP(Basic Multilingual Plane)字符最多只用到3字节长。下面看一下UTF-8编码表:U-00000000 - U-0000007F: 0xxxxxxxU-00000080 - U-00
2012-07-05 14:22:49 1115
转载 内核同步机制-RCU同步机制
转自http://www.360doc.com/content/09/0805/00/36491_4675691.shtml目录[隐藏]1 RCU同步机制1.1 RCU介绍1.2 RCU API函数说明1.3 调用RCU API实现RCU同步1.4 RCU基本设计模式1.5 变换RCU运算法则后的RCU模式1.6 RCU相关数据结构1.7 R
2012-07-05 13:53:12 13244 1
原创 Ubuntu 8.04 x86_64安装xen 4.01
Free download ubuntu8.04(include amd64)http://releases.ubuntu.com/8.04/ 安装1. 安装ubuntu-8.04.4-server-amd64.isoa) UltraISO刻录成DVD,从光盘安盘b) UltraISO制做U盘启动盘,通过U盘安装 2. 更新
2012-07-05 13:38:17 2268
转载 LDD3 linux设备驱动程序学习之lddbus
1. struct device不再包含bus_id,取而代之的是.init_name,修改ldd_bus[cpp] view plaincopystruct device ldd_bus = { .init_name = "ldd0", .release = ldd_bus_release 修改
2012-07-05 13:30:12 952
转载 LDD3之usb-skeleton
在LDD3的例程usb-skeleton中,1)修改id_table如下:[cpp] view plaincopystatic struct usb_device_id skel_table [] = { {.driver_info = 42}, {} };
2012-07-05 13:28:35 693
转载 编译ldd3的scullc模块出现的问题
ldd3的例子程序scullc是用kmem_cache_create等来说明lookaside caches的使用情况。由于在新的内核中,一些定义已经改变了。故该例子程序需要做一些改动。(1)kmem_cache_t结构被换成了kmem_cache。而kmem_cache定义在和。但是你并不需要包含这两个文件中的一个。因为会根据CONFIG_SLUB等来判断具体包含,还是。故例程中需要将
2012-07-05 13:25:19 586
转载 ldd3中scullv模块vm_operations_struct -> nopage到vm_operations_struct ->fault的变换
关于ldd3的scullv,在编译过程中,主要是vm_operations_struct中现在的kernel中已经没有.nopage这一operation了,其被 fault替换了。下面逐一说明:(1)main.c中,主要就是就是上一篇文章提到的INIT_WORK, schedule_delayed_work等改变。可以参考逐一改变即可。(2)在scullv.h中,需要包含
2012-07-05 13:21:02 1259
转载 移植sbull至kernel version > 2.6.31
移植sbull至kernel version > 2.6.31 最近在看LDD3和ULK,学习kernel中块设备的驱动机制,kernel 2.6中block layer API已经变更了许多,主要有以下几点:1. 对于request的请求处理机制,去除掉了原先的elv_next_request和blk_dequeue_request结构,取而代之的是blk_peek_
2012-07-05 13:13:35 785
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人