¸´ÖÆÒÔÏÂÄÚÈÝ£¬±£´æÎª py ºó׺µÄÎļþ£¬¿½±´µ½wallpaperÎļþ¼Ð£¬½øÈëÎļþ¼Ð£¬ÒÔpythonÔËÐУ¬Ñ¡È¡xmlΪ±ÚÖ½
#!/usr/bin/env python2.6
# -*- coding: utf-8 -*-
# Ubuntu 9.10 dynamic wallpaper maker_Can be used in all the distributions of linux
#
# Auto generate a configuration file which you can use as
# dynamic wallpaper.
#USAGE
#use this dynamic-wall-maker.py by ""[somebody@ubuntu~]$python /path/to/the/dynamic-wall-maker.py /path/to/the/wallpapers_filefolder""
#
#cd
#[wowoto@Archlinux windows7-wallpapers]$ python dynamic-wall-maker.py /path/to/the/wallpapers
#You can set "/path/to/the/wallpapers/dyn-wall.xml" as dynamic wallpaper now,have a good day
#[wowoto@Archlinux windows7-wallpapers]$
# xiaoyang006@gmail.com
# 2009.11
import os
import sys
import optparse
class Printer:
'''Print all kinds of tags.'''
def __init__(self):
self.__indent_format = ' '
&nb ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
A:link { so-language: zxx }
-->
Ëùν“Ôıø”¾ÍÊǼìÔIJ¿¶ÓµÄÒâ˼¡£
Linux
´ó¾ü£¨·¢Ðа棩¿Éν“É¢±øÓÎÓ”£¬Ì¸ºÎ´óÔıø£¿´ËÑÔ²îÒÓ¡£
Linux
·¢Ðаæ·×·±Öڶ࣬ÕâÊǿ͹ÛÊÂʵ¡£ÄÜ·ñ½øÐÐ
Linux
´óÔıøÄØ£¿Á½Äêǰ£¬
Ubuntu
µì»ùÈË
Mark
Shuttleworth
¾ÍÌá³öÒ»¸ö´óµ¨µÄÉèÏ룺
Debian
ºÍ
Ubuntu
µÄ
LTS
£¨Ëùν“³¤ÆÚÖ§³Ö”£©°æ±¾ÄÜ·ñʹÓÃͬһ¸ö
Linux
Äں˰汾£¿Èç¹û
Debian
ÉçÇø¿ª·¢ÕßͬÒâÕâÑù×ö£¬
Ubuntuh
ÉçÇøÔ¸Ò⣨³öÇ®¡¢³öÁ¦£©À´°ï档ʵÏÖÁËÕâÒ»²½£¬ÏÂÃæµÄÎÊÌâ¾ÍºÃ°ìÁË¡£
3
ÔÂ
15
ÈÕ£¬
Mark
Shuttleworth
·¢±í²©ÎÄ˵£º½ñÄ꣬а汾
Debian
6
ºÍ
Ubuntu
10.04
£¨
LTS
£©¶¼Ê¹ÓÃͬһ¸ö
Linux
Äں˰汾£¨¼´
2.6.32
°æ±¾£©¡£Êµ¼ÊÉÏ£¬×îа汾µÄ
RHEL
ºÍ
SLES
·¢ÐаæÒ²Ê¹ÓÃÁËÕâͬһ¸öÄں˰汾£¬¶øÇÒ£¬×îа汾µÄ±àÒëÆ÷
GCC
4.4
¡¢
Python
2.6
¡¢
OOo.org
3.2
¡¢
perl
5.1 ......
1. Workqueue
WorkqueueµÄÃû×־ͺÍËûµÄ¹¦ÄÜÒ»Ñù£ºÐèÒª´¦ÀíµÄ¹¤×÷ÁбíºÍ¹¤×÷µÄÌí¼Óɾ³ý£¨Ã²ËÆÃ»Óп´µ½ÈçºÎɾ³ýµÄ£©¡¢ÒÔ¼°¹¤×÷µÄµ÷¶ÈÖ´ÐС£
ÐèÒª´¦ÀíµÄ¹¤×÷Áбíͨ³£¶¼Î¬»¤ÔÚÄں˶ÔÏóworkqueue_structÀïÃæ¡£ÏµÍ³ÀïÃæ¿ÉÒÔÓжà¸öworkqueue_struct¡£Äں˲¿·ÖµÄ¹¤×÷Ìí¼Óµ½Á˹¤×÷¶ÓÁÐkeventd_wq¡£¶øfs/aio.cÀïÃæÊµÏÖÁË×Ô¼ºµÄ¹¤×÷¶ÓÁÐaio_wq¡£
workqueue_structÊÇË«ÏòÑ»·Á´±í¡£ÀïÃæµÄµ¥ÔªÊÇwork_struct¡£
Çý¶¯½Ó¿Ú£º
create_workqueue£º´´½¨¹¤×÷¶ÓÁнṹºÍÄں˴¦ÀíÏ̡߳£
schedule_work/schedule_delayed_work£ºµ÷¶ÈÖ´ÐÐÒ»¸ö¾ßÌåµÄÈÎÎñ£¬Ö´ÐеÄÈÎÎñ½«»á±»¹ÒÈëLinuxϵͳÌṩµÄworkqueue keventd_wq¡£Çë×¢Ò⣬µ÷¶ÈÖ´Ðв¢²»µÈÓÚÁ¢¿ÌÖ´ÐС£¶øÊÇָʾworker_threadÔÚÏ´δ¦Àí¹¤×÷¶ÓÁеÄʱºòÖ´Ðиù¤×÷£»
queue_work/queue_delayed_work£ºµ÷¶ÈÖ´ÐÐÒ»¸öÖ¸¶¨workqueueÖеÄÈÎÎñ¡£Äں˱¾ÉíÌṩÁËÒ»¸ö¹¤×÷¶ÓÁÐkeventd_wq¡£µ«ÊÇ£¬ÏµÍ³ÀïÃæÒ²¿ÉÒÔÓÐÆäËûµÄ¹¤×÷¶ÓÁС£ËùÒÔ¾ÍÓÐÁËschedule_workºÍqueue_workµÄÇø·Ö¡£
1.1 schedule_wo ......
ºÜ¾ÃûÓÐд¼¼Êõ²©ÎÄÁË£¬´ÓÕâÀ↑ʼÎÒµÄÑо¿ÉúÉúÑÄ£¬×ªÑÛ¾ÍÒªÔÚÖ°³¡ÉÏÑø¼Òºý¿Ú£¬Éú»îÕæµÄ²»ÈÝÒ×£¬ÐҺû¹Óм¼ÊõÏà°éΪÎé¡£
ÓÉÓÚ¹¤×÷µÄ¹ØÏµ£¬ÖÕÓÚ½Ó´¥µ½linuxÍøÂçºÍkernelµÄ±à³Ì£¬×ÜÌåÀ´Ëµ×ÜÊÇÒ»¸öºÃµÄÆõ»ú¡£ÈÃÎÒÄܹ»ÉîÈë²Ù×÷ϵͳÄںˡ£×ö¹ýÒ»¶Îʱ¼äµÄÓû§³ÌÐòµÄ¿ª·¢£¬×ÜÊÇÔÚWindowsƽ̨ÉÏ£¬ÖÕÓÚÓлú»áÔÚlinuxÉÏ×öµã¶«Î÷£¬»¹ÊǺÜÐ˷ܵġ£
Ê×ÏÈÊÇÒ»¸öHello WorldµÄÄں˳ÌÐò£¬È»ºó¾ÍÊÇÒ»´ó¶Ñ±àÒëµÄÎÊÌ⣬ÓÉÓÚûÓнӴ¥¹ýLinuxËùÒÔ»¨·ÑÁ˺ܶàʱ¼äÔÚÕâÉÏÃæ¡£
1£© hellokernel.c ÎҵıàÒë»·¾³ÊÇÔÚÐéÄâµÄLinux Redhat 5.0 ÉϱàÒëµÄ
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL")£» //Õâ¸öºêµÄÒâ˼ÎÒ»¹ÊDz»Ì«Ã÷°×£¬Ö±½Ó³Á˹ýÀ´
static int hello_init(void)
{
printk(KERN_ALERT"Hello,world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodby,cruel world\n");
}
module_init(hello_init); //µ±ÄÚºËÄ£¿é±»×°ÔصÄʱºòµ÷ÓÃhello_initº¯Êý
module_exit(hello_exit); //µ±ÄÚºËÄ£¿é±»Ð¶ÔصÄʱºòµ÷ÓÃhello_exitº¯Êý
2£©Ô´´úÂë ......
ǶÈëʽϵͳÓëͨÓÃPC»ú²»Í¬£¬Ò»°ãûÓÐÓ²ÅÌÕâÑùµÄ´æ´¢É豸¶øÊÇʹÓÃFlashÉÁ´æÐ¾Æ¬¡¢Ð¡ÐÍÉÁ´æ¿¨µÈרΪǶÈëʽϵͳÉè¼ÆµÄ´æ´¢×°Ö㬱¾ÎÄ·ÖÎöÁËǶÈëʽϵͳÖг£ÓõĴ洢É豸¼°Æä¹ÜÀí»úÖÆ£¬½éÉÜÁ˳£ÓõĻùÓÚFLASHµÄÎļþϵͳÀàÐÍ¡£
1£®Ç¶Èëʽϵͳ´æ´¢É豸¼°Æä¹ÜÀí»úÖÆ·ÖÎö
¡¡¡¡¹¹½¨ÊÊÓÃÓÚǶÈëʽϵͳµÄLinuxÎļþϵͳ£¬±ØÈ»»áÉæ¼°µ½Á½¸ö¹Ø¼üµã£¬Ò»ÊÇÎļþϵͳÀàÐ͵ÄÑ¡Ôñ£¬Ëü¹ØÏµµ½ÎļþϵͳµÄ¶ÁдÐÔÄÜ¡¢³ß´ç´óС;ÁíÒ»¸ö¾ÍÊǸùÎļþϵͳÄÚÈݵÄÑ¡Ôñ£¬Ëü¹ØÏµµ½¸ùÎļþϵͳËùÄÜÌṩµÄ¹¦Äܼ°³ß´ç´óС¡£
¡¡¡¡Ç¶ÈëʽÉ豸ÖÐʹÓõĴ洢Æ÷ÊÇÏñFlashÉÁ´æÐ¾Æ¬¡¢Ð¡ÐÍÉÁ´æ¿¨µÈרΪǶÈëʽϵͳÉè¼ÆµÄ´æ´¢×°Öá£FlashÊÇĿǰǶÈëʽϵͳÖй㷺²ÉÓõÄÖ÷Á÷´æ´¢Æ÷£¬ËüµÄÖ÷ÒªÌØµãÊǰ´ÕûÌå/ÉÈÇø²Á³ýºÍ°´×Ö½Ú±à³Ì£¬¾ßÓе͹¦ºÄ¡¢¸ßÃܶȡ¢Ð¡Ìå»ýµÈÓŵ㡣Ŀǰ£¬Flash·ÖΪNOR, NANDÁ½ÖÖÀàÐÍ¡£
¡¡¡¡NORÐÍÉÁ´æ¿ÉÒÔÖ±½Ó¶ÁȡоƬÄÚ´¢´æµÄÊý¾Ý£¬Òò¶øËٶȱȽϿ죬µ«ÊǼ۸ñ½Ï¸ß¡£NORÐÍоƬ£¬µØÖ·ÏßÓëÊý¾ÝÏß·Ö¿ª£¬ËùÒÔNORÐÍоƬ¿ÉÒÔÏñSRAMÒ»ÑùÁ¬ÔÚÊý¾ÝÏßÉÏ£¬¶ÔNORоƬ¿ÉÒÔ“×֔Ϊ»ù±¾µ¥Î»²Ù×÷£¬Òò´Ë´«ÊäЧÂʺܸߣ¬Ó¦ÓóÌÐò¿ÉÒÔÖ±½ÓÔÚFlashÄÚÔËÐУ¬²»±ØÔÙ°Ñ´úÂë¶Áµ½ÏµÍ³RAMÖÐÔËÐС£ËüÓëS ......
Ŀ¼½á¹¹Îª£º
inc/hello.h
src/hello.c
main/main.c
Makefile
ÎļþÄÚÈÝΪ£º
hello.h:
void hello(char name[]);
hello.c:
#include <stdio.h>
void hello(char name[])
{
printf("Hello %s!\n", name);
}
main.c:
#include <stdio.h>
#include "hello.h"
// The second hello.h should in ""
int main()
{
hello("GCC");
printf("Haha Linux Ubuntu!\n");
return 0;
}
Makefile:
# String declaration
objects = main.o hello.o
# Command
app : $(objects)
cc -o app $(objects)
main.o : main.c hello.h stdio.h
cc -c $< -I ./inc
hello.o : hello.c stdio.h
cc -c $<
# Search paths
vpath %.h /usr/include : inc
vpath %.c main : src
# Clean the intermediate files
.PHONY : clean
clean :
rm app *~ $(objects)
Ê×ÏÈ£¬ÐèÒªÃ÷È·Ò»µã£¬ÕâÀïÃæÓÐÁ½¸öÖ´ÐгÌÐò£¬Ò»¸ömake£¬Ò»¸ögcc£¬ÔÚMakefileÀïÕâÁ½¸öµÄÓï¾äÒ²ÊÇ·Ö±ðÕ¼1Ðеġ£
ÕâÀï×îÖ÷ÒªµÄÊÇ·¾¶µÄÎÊÌ⣬ÒòΪ²»Í¬µÄÎļþÔÚ²»Í¬µÄĿ¼ÏÂÃæ£¬ËùÒÔÒª¸æËß³ÌÐòÎļþËùÔڵķ¾¶£¬¶øÓÖÓÐÁ½¸ö³ÌÐòÐèÒª¸æÖª£¬¶øÁ½¸ö³ÌÐò¸æÖªµÄ·½Ê½ÓÖ²»Í ......