Linux lock_kernel()º¯ÊýµÄ·ÖÎö¡£
ÕâÖ»ÊÇÔÝʱµÄ¼Ç¼£¬ÒÔºó»á°ÑËü¹éÀൽstart_kernel()º¯ÊýµÄ·ÖÎö¡£ÔÚ·ÖÎö֮ǰ£¬ÎÒÏÈҪ˵˵¼¸¸ö¸ÅÄî¡£
ÄÚºËÇÀÕ¼£ºÔÚ2.6Äں˼ÓÈëÁËÇÀÕ¼µÄÄÜÁ¦£¬¾ÍÊÇ˵µ÷¶È³ÌÐòÓа취ÔÚÒ»¸öÄں˼¶µÄÈÎÎñÕýÔÚÖ´ÐеÄʱºò´Óе÷¶È¡£µ«ÊDZØÐëÒª±£Ö¤ÖØÐµ÷¶ÈÒª°²È«£¬ÕâÑù¾ÍÒª¿¿Ò»°ÑËøÀ´±£Ö¤ÁË¡£
¼ÆÊýÆ÷£¨thread_info.[reempt_count£©£ºÆäʵҲ¿ÉÒÔ°ÑËû½Ð³ÉËøµÄ£¬ËüµÄ³õÖµ¶¨ÒåΪ0£¬Ã¿µ±Ê¹ÓÃËøµÄʱºò¼Ó1.
ºÃÁË£¬ÎÒÃÇÏÖÔÚÀ´¿´¿´lock_kernel()µÄ¾ßÌå´úÂëÀ²£¨2.6.10°æ±¾µÄ£©
#ifndef __LINUX_SMPLOCK_H
#define __LINUX_SMPLOCK_H
#include <linux/config.h>
#include <linux/sched.h>
#include <linux/spinlock.h>
#ifdef CONFIG_LOCK_KERNEL
#define kernel_locked() (current->lock_depth >= 0)
extern int __lockfunc get_kernel_lock(void);
extern void __lockfunc put_kernel_lock(void);
/*
* Release/re-acquire global kernel lock for the scheduler
*/
#define release_kernel_lock(tsk) do { \
if (unlikely((tsk)->lock_depth >= 0)) \
put_kernel_lock(); \
} while (0)
/*
* Non-SMP kernels will never block on the kernel lock,
* so we are better off returning a constant zero from
* reacquire_kernel_lock() so that the compiler can see
* it at compile-time.
*/
#ifdef CONFIG_SMP
#define return_value_on_smp return
#else
#define return_value_on_smp
#endif
static inline int reacquire_kernel_lock(struct task_struct *task)
{
if (unlikely(task->lock_depth >= 0))
return_value_on_smp get_kernel_lock();
return 0;
}
extern void __lockfunc lock_kernel(void) __acquires(kernel_lock);
extern void __lockfunc unlock_kernel(void) __releases(kernel_lock);
#else
#define lock_kernel() do { } while(0)
#define unlock_kernel() do { } while(0)
#define release_kernel_lock(task) do { } while(0)
#define reacquire_kernel_lock(task) 0
#define kernel_locked() 1
#
Ïà¹ØÎĵµ£º
linuxÎļþϵͳ·ÖÅä²ßÂÔ£º
¿é·ÖÅä( block allocation )£º´ÅÅÌÉϵÄÎļþ¿é¸ù¾ÝÐèÒª·ÖÅ䏸Îļþ£¬±ÜÃâÁË´æ´¢¿Õ¼äµÄÀË·Ñ¡£µ«µ±ÎļþÀ©³äʱ£¬»áÔì³ÉÎļþÖÐÎļþ¿éµÄ²»Á¬Ðø£¬´Ó¶øµ¼Ö¹ý¶àµÄ´ÅÅÌѰµÀʱ¼ä¡£Ã¿Ò»´ÎÎļþÀ©Õ¹Ê±£¬¿é·ÖÅäËã·¨¾ÍÐèҪдÈëÎļþ¿éµÄ½á¹¹ÐÅÏ¢£¬Ò²¾ÍÊÇ meta-dada ¡£meta-data×ÜÊÇÓëÎļþÒ»ÆðдÈë´æ´¢É豸£¬¸ ......
Èí¼þ°²×°ÃüÁî
1. tar
tar ÃüÁîµÄ»ù±¾Ó÷¨Îª£º
tar [Ñ¡Ïî] ÎļþÃû
³£ÓõÄÑ¡Ïî°üÀ¨
-c ´´½¨Ò»¸öеĵµ°¸Îļþ
-t ²é¿´µµ°¸ÎļþµÄÄÚÈÝ
-x ·Ö½âµµ°¸ÎļþµÄÄÚÈÝ
-f Ö¸¶¨µµ°¸ÎļþµÄÃû³Æ
-v ÏÔʾ¹ý³ÌÐÅÏ¢
-z ²ÉÓÃѹËõ·½Ê½
¾ÙÀý
1 tar -czf oracle.tar.gz /u01/app/oracle /etc/oratab /home/oracl ......
Èç½ñ£¬ÖÐСѧÀïÃæ¼¸ºõÈ«ÊÇXPѧÉú£¬±Ä±ÄÌøÌø£¬Linux£¨¼·£©½øÑ§Ð£¼¸ºõÎÞÃÅ¡£ÄÇô£¬ÎÒÃǸÃÔõô°ìÄØ£¿ÄÜ·ñ²»ÆÆ¶øÁ¢£¿
×òÌìÉÏÎ磬ÎÒÈ¥±±¾©ÊÐÓйز¿ÃżûһλÀÏÅóÓÑ£¬Ïë̸̸Õâ¸öÎÊÌâ¡£µ±Ç°£¬ÔÚÎÒ¹úÖÐСѧ£¬Linux²»Èë½Ìѧ´ó¸Ù£¬µ«ÊÇ£¬×÷Ϊ¿ÎÍâ»î¶¯ÄÚÈÝ»¹ÊÇ¿ÉÒԵġ£Linux½ ......
Ò».È¥³ýembedded linux µÄ¿ª»ú¹â±ê:
¡¡ÔÚÄں˵ĵ±Ç°Ä¿Â¼½øÈëµ½drivers/video/console/fbcon.cÎļþ
¡¡½«static void fb_flashcursor(void *private) ÀïµÄÄÚÈÝ×¢Ê͵ô,ʹ֮±ä³É¿Õº¯Êý
¶þ.ÉèÖÃLINUXÄÚºËÆô¶¯LOGO
(1)ÈÃÄÚºËÖ§³ÖÆô¶¯LOGO
ÔÚÄÚºËĿ¼ÖÐ ......
½âѹ¼¸ÖÖÎļþ¸ñʽ
wzwz.tar.gz——tar zxvf wzwz.tar.gz
wzwz.tar.bz2——tar jxvf wzwz.tar.bz2
wzwz.rpm——rpm -ivh wzwz.rpm
cpio——cpio -idm < wzwz.img
Éú³Éinitrd.img
dd if=/dev/zero of=/home/wzwz.img bs=1M count=10
mke2fs -F -v wzwz.i ......