当前位置:  技术问答>linux和unix

大虾帮我看看有关frame buffer的源程序?

    来源: 互联网  发布时间:2014-12-15

    本文导语:  #include  #include  #include  #include  #include  #include  #include  /* for mmap function call */ #include  int open_file(const char *pathname,mode_t mode) {          int retval;         retval=open(pathname,O_WRONLY,mode);         if(retva...

#include 
#include 
#include 
#include 
#include 
#include 
#include  /* for mmap function call */

#include 
int open_file(const char *pathname,mode_t mode)
{
    
    int retval;
        retval=open(pathname,O_WRONLY,mode);
        if(retval==-1)
        {
    printf("rn sorry,open file failurenr");
    printf("rn the error numer is %4dnr",error);
            return(-1);
        }
        else return(retval);

}

int copytomem(void)
{
    unsigned char *fb_mem;
    int fb;
fb=open_file("/dev/fb0",S_IRWXU);
        
        if(fb)
        {
  fb_mem=mmap(NULL,1024*768,PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);
            if(!fb_mem) 
    {
        printf("n copy to mem errorn"); return -1 ;
    }
            else
            {
printf("rn set memory valuenr");
                memset(fb_mem,0,1024*768);

    }

        }
        return 1;
}

int main(void)
{
    copytomem();
    return 2;
}

//它老说打不开设备文件/dev/fb0,还有在memset后就会出现segmemtion fault,当我打开的是一般文件时,文件倒是能打开,不过还是有segmention fault.

|
1.直接用opne打开不用参数mode
2。你的mmap返回可能是错误的,你的判断是错误的。因该干成
if (fb_mem == MAP_FAILED)
{
}
else

|
不是这样用D

#include 
#include 
#include 
#include 
#include 
#include 
#include  /* for mmap function call */
#include 
#include 
#include 

#include 
int open_file(const char *pathname)
{
    
    int retval;
        retval=open(pathname,O_WRONLY);
        if(retval==-1)
        {
    printf("rn sorry,open file failurenr");
    printf("rn the error numer is %4dnr",error);
            return(-1);
        }
        else return(retval);

}

int copytomem(void)
{
    int fb;
    
    unsigned long fb_mem_offset;
    unsigned long fb_mem;
    struct fb_fix_screeninfo fb_fix;
    struct fb_var_screeninfo fb_var;

    fb=open_file("/dev/fb0");
        
    if(fb)
    {
      if( -1 == ioctl(fb, FBIOGET_FSCREENINFO, &fb_fix))
      {
         printf("get fb fix screen info error");
         exit(-1);
      }
      if(-1 == ioctl(fb, FBIOGET_VSCREENINFO, &fb_var))
      {
         printf("get fb visual screen info error");
         exit(-1);
      }
      fb_mem_offset = (unsigned long) fb_fix.smem_start & (~PAGE_MASK);
      fb_mem = mmap(NULL, fb_fix.smem_len + fb_mem_offset, PROT_READ|PROT_WRITE, MAP_SHARED, fb, 0);
      if(-1L == (long) fb_mem) 
      {
        printf("mmap error to mem errorn"); return -1 ;
      }
      else
      {
printf("rn set memory valuenr");
         memset(fb_mem, 0, fb_var.yres * fb_fix.line_length);
      }

    }
    return 1;
}

int main(void)
{
    copytomem();
    return 2;
}

|
用之前先看看ls -l /dev/fb0这个设备在不在和它的属性

|
crw------- 1 root root 29, 0 aug 30 2001 /dev/fb0
只有root才有读写的权力,确认你的权限

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各位大虾,小弟有一事不明,请大虾赐教!
  • 在solaris下如何卸载wu-ftpd???????????????????????谢谢大虾!!!!!!!!!!
  • 请大虾们谈谈linux和unix的异同吧
  • 请大虾,详细介绍一下JavaBean的写法,和调用过程!
  • 对LDAP有研究的大虾请进,见者有分
  • 超级新手菜鸟请问各位大虾!
  • 各位大虾,一个初学者该怎样开始学习java?
  • 请问各位大虾,什么地方有Jsp学习资料?
  • 哪位大虾知道weblogic与websphere的差别?
  • 大虾救命!APACHE没有理睬JSP?!!!
  • 请问各位大虾,如何把一个String赋值给一个Char[]??
  • 大虾救命啊!!!50分!!!
  • 哪位大虾指点一下哪里有weblogic下载啊???
  • 请问各位unix大虾,哪有免费的unix下载?
  • 初学者求救!!哪位大虾给点源代码?
  • 在下初学java,请各位大虾推荐几个java学习网站吧!
  • 请各位大虾介绍几个好一点的linux论坛,谢谢!
  • 大虾救命,dos下面怎么输入中文?
  • 请问大虾们,如何学习linux?
  • session里面可以放整型数吗?大虾请指教!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3