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Ö®shell¼ò½é
shellÊÇÓû§ºÍlinuxϵͳ֮¼äµÄ½Ó¿Ú£¨ºÜÏñwindowsϵͳϵÄdos£©£¬linuxÓжàÖÖshell£¬È±Ê¡µÄʹÓÃbash
shell³£ÓõÄ3ÖÖÀàÐÍ£º
1¡¢Bourne shell£¨sh£©£ºUNIXÉÏ×î³õʹÓõÄÀàÐÍ£¬linuxϵͳȱʡµÄshellÊÇBourne Again shell£¨bash£©£¬ËûÊÇBourne shellµÄÀ©Õ¹£¬Ôö¼ÓÁ˺ܶàÌØÐÔ£¬»¹°üº¬ÁËC shellºÍKorn shellµÄÓÅ ......
Red Hat Enterprise linux 5ÅäÖÃVPN·þÎñÆ÷¶ËÐÂÊÖÉÏ·
1.×¼±¸¶¯×÷,ʹÓÃÏÂÃæµÄÃüÁîÏÂÔØÐèÒªµÄ°²×°Îļþ¡£(ĬÈϵĴæ·ÅλÖÃÓ¦¸ÃÊÇ/home
/admin)
wget http://poptop.sourceforge.net/yum/stable/packages/dkms-2.0.17.5-1.noarch.rpm
wget
http://poptop.sourceforge.net/yum/stable/packages/kernel_ppp_mppe-1.0.2-3dk ......
1£¬LinuxµÄI2CÇý¶¯¼Ü¹¹¸ÅÀÀ
LinuxÖÐI2C×ÜÏßµÄÇý¶¯·ÖΪÁ½¸ö²¿·Ö£¬×ÜÏßÇý¶¯£¨BUS£©ºÍÉ豸Çý¶¯£¨DEVICE£©¡£ÆäÖÐ×ÜÏßÇý¶¯µÄÖ°Ôð£¬ÊÇΪϵͳÖÐÿ¸öI2C×ÜÏßÔö¼ÓÏàÓ¦µÄ¶Áд·½·¨£¨±ÈÈ粻ͬµÄÖ÷оƬ¼¯³ÉµÄI2C¿ØÖÆÆ÷£©¡£µ«ÊÇ×ÜÏßÇý¶¯±¾Éí²¢²»»á½øÐÐÈκεÄͨѶ£¬ËüÖ»ÊÇ´æÔÚÔÚÄÇÀµÈ´ýÉ豸Çý¶¯µ÷ÓÃÆäº ......
1£¬Çý¶¯³ÌÐòÈë¿ÚºÍ³ö¿Úµã
module_init£ºÇý¶¯³ÌÐò³õʼ»¯Èë¿Úµã£¬º¯ÊýÔÐÍ£ºmodule_init ( x)£¬xΪÆô¶¯Ê±»ò²åÈëÄ£¿éʱҪÔËÐеĺ¯Êý¡£Èç¹ûÔÚÆô¶¯Ê±¾ÍÈ·ÈϰÑÕâ¸öÇý¶¯³ÌÐò ²åÈëÄں˻òÒÔ¾²Ì¬ÐγÉÁ´½Ó£¬Ôòmodule_init ½«Æä³õʼ»¯Àý³Ì¼ÓÈëµ½"__initcall.int"´úÂë¶Î£¬·ñÔò½«ÓÃinit_module·â×°Æä³õʼ»¯Àý³Ì£¬ÒÔ±ã¸ÃÇý¶¯³ÌÐò×÷Ϊģ¿éÀ ......
ǰÑÔ£ºÎÒ¾õµÃÎÒµÄÎÄÕÂÏà¶ÔÀ´Ëµ¶¼ÊDZȽÏdzÏԵġ£Ò»Ð©³õѧÕß¿ÉÒÔ¿´¿´£¬¶ÔÓÚ¸ßÊÖÀ´Ëµ£¬Èç¹ûÄãÃDz»ÁߨÄʱ¼äµÄ»°£¬Ï£ÍûÒ²ÄܰïÎÒ¿´¿´£¬Ö¸µãÒ»ÏÂÆäÖеĴíÎó¡£ÕâÒ²ÊÇÎÒµ½ÕâÀïÀ´ºÍ´ó¼Ò½»Á÷µÄÄ¿µÄ¡£
ÔĶÁLinuxÄÚºËÆô¶¯´úÂëµÄÖ±½Ó¶¯Á¦ÊÇÎÒÏë±àдRTL8019ASµÄÍø¿¨Çý¶¯³ÌÐò£¨2.4.18ÄÚºËÖ»Ö§³ÖÁËCS8900A£©¡£¼ÈȻҪдÇý¶¯£¬ÎÒ¾ÍÏëÖªµÀËüÊÇÔ ......