Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

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ÎļþÀàÐÍ

• ÆÕͨÎļþ£¨regular file£©£º¾ÍÊÇÒ»°ãÎÒÃÇ´æÈ¡µÄÎļþ£¬ÓÉls -alÏÔʾ³öÀ´µÄÊôÐÔÖУ¬µÚÒ»¸öÊôÐÔΪ [-]£¬ÀýÈç [-rwxrwxrwx]¡£ÁíÍ⣬ÒÀÕÕÎļþµÄÄÚÈÝ£¬ÓÖ´óÖ¿ÉÒÔ·ÖΪ£º
´¿Îı¾Îļþ£¨ASCII£©£ºÕâÊÇUnixϵͳÖÐ×î¶àµÄÒ»ÖÖÎļþÀàÐÍ£¬Ö®ËùÒÔ³ÆÎª´¿Îı¾Îļþ£¬ÊÇÒòΪÄÚÈÝΪÎÒÃÇ¿ÉÒÔÖ±½Ó¶Áµ½µÄÊý¾Ý£¬ÀýÈçÊý×Ö¡¢×ÖĸµÈµÈ¡ ......

linuxϵͳѧϰС½á£¨1£©

´ÇÖ°Ö®ºóһֱûÓÐÕÒ¹¤×÷£¬²»ÊÇÕÒ²»µ½£¬Ö»ÊDz»ÂúÒâ´ýÓöÎÊÌâ¡£ÔÚ´òÁËÒ»¸öÔÂÓÎÏ·Ö®ºóÓÚ×òÌ쿪ʼ½Ó´¥linuxϵͳ¡£
ÎÒÓõÄÊÇubuntu£¬¾ßÌå°²×°µÄʱºòûÓÐ×ÐϸµÄ·ÖÇø£¬Ö÷ÒªÊÇ/boot·ÖÁË256M£»¹ÒÔØµã£¨swap)·ÖÁË1GB£»/·ÖÁËËùÓеġ£
ÔÚ°²×°Ö®ºóÓöµ½µÄµÚÒ»¸öÎÊÌâÊÇÒÔǰwindowsϵÄrar²»Äܽâѹ£¬ËæºóÕÒÁËÒ»Ð©ÍøÂçÏà¹ØµÄÎļþ¡£¾ßÌå·½·¨Ê ......

LINUX¾²Ì¬Á´½Ó¿â˳ÐòÎÊÌâ

×òÌìÔÚ±àдһ¸ö³ÌÐòµÄʱºò·¢ÏÖÐèÒªÁ´½ÓµÄ¾²Ì¬¿â¶¼È·¶¨´æÔÚ£¬Ö¸¶¨µÄ·¾¶Ò²Ã»ÓÐÎÊÌ⣬µ«ÊDZàÒë×ÜÊdzöÏÖÁ´½ÓÎÊÌ⣬ÕÒ²»µ½ÊµÏÖ£¬²Å·¢ÏÖÔ­À´Èç¹ûͬʱÁ´½Ó¶à¸ö¾²Ì¬¿â£¬²¢ÇÒÈç¹ûÕâЩ¾²Ì¬¿âÖ®¼ä´æÔÚÏ໥ÒÀÀµ¹ØÏµµÄ»°£¬ÐèÒª°´Ò»¶¨µÄ˳Ðò½øÐÐÁ´½Ó£¬ÀýÈ磺Èç¹ûlibb.aÒÀÀµliba.a£¬ÄÇô±àÒë²ÎÊýÓ¦¸Ãд³ÉÕâÑù£º -lb -la ......

LinuxÇý¶¯³ÌÐòµÄ»ù±¾º¯Êý

1£¬Çý¶¯³ÌÐòÈë¿ÚºÍ³ö¿Úµã
module_init£ºÇý¶¯³ÌÐò³õʼ»¯Èë¿Úµã£¬º¯ÊýÔ­ÐÍ£ºmodule_init ( x)£¬xΪÆô¶¯Ê±»ò²åÈëÄ£¿éʱҪÔËÐеĺ¯Êý¡£Èç¹ûÔÚÆô¶¯Ê±¾ÍÈ·ÈϰÑÕâ¸öÇý¶¯³ÌÐò ²åÈëÄں˻òÒÔ¾²Ì¬ÐγÉÁ´½Ó£¬Ôòmodule_init ½«Æä³õʼ»¯Àý³Ì¼ÓÈëµ½"__initcall.int"´úÂë¶Î£¬·ñÔò½«ÓÃinit_module·â×°Æä³õʼ»¯Àý³Ì£¬ÒÔ±ã¸ÃÇý¶¯³ÌÐò×÷Ϊģ¿éÀ ......

Linux 2.6ÄÚºËϱàÒë¿ÉÒÔ¼ÓÔØµÄÄÚºËÄ£¿é

1. Ôھɵİ汾Ï£¨Èçlinux 2.4£©linuxÄÚºËÄ£¿éµÄ±àÒëÖ»ÐèÒªÓÐÄں˵ÄÍ·Îļþ¾ÍÐÐÁË£¬¾Í¿ÉÒÔͨ¹ýºÍ±àÒëÆäËû³ÌÐòÒ»ÑùµÄ·½·¨±àÒë³Éfilename.oÎļþ£¬Õâ¸ö.oÎļþÊÇÖ±½Ó ¿ÉÒÔ¼ÓÔØµÀÄÚºËÖе쬼ÓÔØÖ®ºó¾Í¿ÉÒÔÓÃÁË¡£È»¶øÔÚ2.6ϾͽØÈ»²»Í¬ÁË£¬ÔÚlinux 2.6ÏÂÄں˵ıàÒëÒªÓÐϵͳÄÚºËÊ÷µÄÖ§³Ö£¬ÏÂÃæ½éÉÜÒ»ÏÂÕâ¸ö“ÄÚºËÊ÷”ÊÇÈç ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ