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

LinuxÉ豸Çý¶¯±à³ÌÖ®×èÈûÓë·Ç×èÈû

×èÈû²Ù×÷ÊÇÖ¸£¬ÔÚÖ´ÐÐÉ豸²Ù×÷ʱ£¬Èô²»ÄÜ»ñµÃ×ÊÔ´£¬Ôò½ø³Ì¹ÒÆðÖ±µ½Âú×ã¿É²Ù×÷µÄÌõ¼þÔÙ½øÐвÙ×÷¡£·Ç×èÈû²Ù×÷µÄ½ø³ÌÔÚ²»ÄܽøÐÐÉ豸²Ù×÷ʱ£¬²¢²»¹ÒÆð¡£±»¹ÒÆðµÄ½ø³Ì½øÈësleep״̬£¬±»´Óµ÷¶ÈÆ÷µÄÔËÐжÓÁÐÒÆ×ߣ¬Ö±µ½µÈ´ýµÄÌõ¼þ±»Âú×ã¡£
¡¡¡¡ÔÚLinux
¡¡¡¡¹ØÓÚÉÏÊöÀý³Ì£¬ÎÒÃDz¹³ä˵һµã£¬Èç¹û½«Çý¶¯³ÌÐòÖеÄreadº¯Êý¸ÄΪ£º
static ssize_t globalvar_read(struct file *filp, char *buf, size_t len, loff_t *off)
{
¡¡//»ñÈ¡ÐźÅÁ¿£º¿ÉÄÜ×èÈû
¡¡if (down_interruptible(&sem))
¡¡{
¡¡¡¡return - ERESTARTSYS;
¡¡}
¡¡//µÈ´ýÊý¾Ý¿É»ñµÃ£º¿ÉÄÜ×èÈû
¡¡if (wait_event_interruptible(outq, flag != 0))
¡¡{
¡¡¡¡return - ERESTARTSYS;
¡¡}
¡¡flag = 0;
¡¡//ÁÙ½ç×ÊÔ´·ÃÎÊ
¡¡if (copy_to_user(buf, &global_var, sizeof(int)))
¡¡{
¡¡¡¡up(&sem);
¡¡¡¡return - EFAULT;
¡¡}
¡¡//ÊÍ·ÅÐźÅÁ¿
¡¡up(&sem);
¡¡return sizeof(int);
}
¡¡¡¡¼´½»»»wait_event_interruptible(outq, flag != 0)ºÍdown_interruptible(&sem)µÄ˳Ðò£¬Õâ¸öÇý¶¯³ÌÐò½«±äµÃ²»¿ÉÔËÐС£Êµ¼ÊÉÏ£¬µ±Á½¸ö¿ÉÄÜÒª×èÈûµÄʼþͬʱ³öÏÖʱ£¬¼´Á½¸öwait_event»òdown°ÚÔÚÒ»ÆðµÄʱºò£¬½«±äµÃ·Ç³£Î£ÏÕ£¬ËÀËøµÄ¿ÉÄÜÐԺܴó£¬Õâ¸öʱºòÎÒÃÇÒªÌرðÁôÒâËüÃǵijöÏÖ˳Ðò¡£µ±È»£¬ÎÒÃÇÓ¦¸Ã¾¡¿ÉÄܵرÜÃâÕâÖÖÇé¿öµÄ·¢Éú£¡
¡¡¡¡+»¹ÓÐÒ»¸öÓëÉ豸×èÈûÓë·Ç×èÈû·ÃÎÊϢϢÏà¹ØµÄÂÛÌ⣬¼´selectºÍpoll£¬selectºÍpollµÄ±¾ÖÊÒ»Ñù£¬Ç°ÕßÔÚBSD UnixÖÐÒýÈ룬ºóÕßÔÚSystem VÖÐÒýÈë¡£pollºÍselectÓÃÓÚ²éѯÉ豸µÄ״̬£¬ÒÔ±ãÓû§³ÌÐò»ñÖªÊÇ·ñÄܶÔÉ豸½øÐзÇ×èÈûµÄ·ÃÎÊ£¬ËüÃǶ¼ÐèÒªÉ豸Çý¶¯³ÌÐòÖеÄpollº¯ÊýÖ§³Ö¡£
¡¡¡¡Çý¶¯³ÌÐòÖÐpollº¯ÊýÖÐ×îÖ÷ÒªÓõ½µÄÒ»¸öAPIÊÇpoll_wait£¬ÆäÔ­ÐÍÈçÏ£º
void poll_wait(struct file *filp, wait_queue_heat_t *queue, poll_table * wait);
¡¡¡¡poll_waitº¯ÊýËù×öµÄ¹¤×÷Êǰѵ±Ç°½ø³ÌÌí¼Óµ½wait²ÎÊýÖ¸¶¨µÄµÈ´ýÁÐ±í£¨poll_table£©ÖС£ÏÂÃæÎÒÃǸøglobalvarµÄÇý¶¯Ìí¼ÓÒ»¸öpollº¯Êý£º
static unsigned int globalvar_poll(struct file *filp, poll_table *wait)
{
¡¡unsigned int mask = 0;
¡¡poll_wait(filp, &outq, wait);
¡¡//Êý¾ÝÊÇ·ñ¿É»ñµÃ£¿
¡¡if (flag != 0)
¡¡{
¡¡¡¡mask |= POLLIN | POLLRDNORM; //±êʾÊý¾Ý¿É»ñµÃ
¡¡}
¡¡return mask;
}
¡¡¡¡ÐèҪ˵Ã÷µÄÊÇ£¬poll_waitº¯Êý²¢²»×èÈû£¬³ÌÐòÖÐpoll_wait(filp, &outq, wait)Õâ¾ä»°µÄÒâ˼²


Ïà¹ØÎĵµ£º

LinuxÉ豸ģÐÍÖ®input×ÓϵͳÏê½â

Ò»£ºÇ°ÑÔ
×î½üÔÚÑо¿androidµÄsensor driver£¬Ö÷ÒªÊÇE-compass£¬ÆäÖÐÓõ½ÁËLinux input×Óϵͳ.ÔÚÍøÉÏÒ²¿´Á˺ܶàÕâ·½ÃæµÄ×ÊÁÏ£¬¸Ð¾õ»¹ÊÇÕâƪ·ÖÎöµÄ±È½ÏϸÖÂ͸³¹£¬Òò´ËתÔØÒ»ÏÂÒÔ±ã×Ô¼ºÑ§Ï°£¬Í¬Ê±ºÍ´ó¼Ò·ÖÏí£¡
£¨Õâƪ²©¿ÍÖ÷ÒªÊÇÒÔ¼üÅÌÇý¶¯ÎªÀýµÄ£¬²»¹ý½²½âµÄÊÇLinux Input Subsystem£¬¿ÉÒÔ×ÐϸµÄÑо¿Ò»Ï£¡£©
¼üÅÌÇý¶¯½«¼ì ......

Linux °²×°Èí¼þ ͨÓ÷½·¨


°²×°ÊµÀý£ºImageMagickµÄ°²×°·½·¨
ImageMagickµÄ°²×°·½·¨ÓÐRPM·½Ê½ºÍSOURCE·½Ê½¡£Ä¿Ç°×îаæÊÇImageMagick-6.5.5¡£¿ÉÒÔ´ÓÕâ¸öÍøÖ·ÏÂÔØ£º http://www.imagemagick.org
°²×°²½Ö裺
£±£®sshÁ¬½ÓLinux·þÎñÆ÷
£²£®°ÑÏÂÔصݲװÎļþ·Åµ½Êʵ±µÄÎļþ¼ÐÏ¡£ÀýÈ磺cd /usr/local/src¡£»òÕßÖ±½ÓÔÚ·þÎñÆ÷ÉÏÏÂÔØ¡£
3£®½âѹÏÂÔØÎļ ......

linuxÏÂIP v6 tcp¿Í»§¶ËÔ´ÂëʾÀý

/***********************************
*
*client.c
*
**********************************/

#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<sy ......

linuxÏ´óÎļþ¶ÁдԴÂëʾÀý

#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE
#define _FILE_OFFSET_BITS 64
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
int main()
{
printf("sizeof(off_t) = %d\n", sizeof(off_t));
int ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØͼ | ¸ÓICP±¸09004571ºÅ