首页 文章 精选 留言 我的

精选列表

搜索[系统工具],共10000篇文章
优秀的个人博客,低调大师

Android系统的开机画面显示过程分析(4)

函数fb_show_logo_line也是实现在文件kernel/goldfish/drivers/video/fbmem.c中,如下所示: staticintfb_show_logo_line(structfb_info*info,introtate, conststructlinux_logo*logo,inty, unsignedintn) { u32*palette=NULL,*saved_pseudo_palette=NULL; unsignedchar*logo_new=NULL,*logo_rotate=NULL; structfb_imageimage; /*Returniftheframebufferisnotmappedorsuspended*/ if(logo==NULL||info->state!=FBINFO_STATE_RUNNING|| info->flags&FBINFO_MODULE) return0; image.depth=8; image.data=logo->data; if(fb_logo.needs_cmapreset) fb_set_logocmap(info,logo); if(fb_logo.needs_truepalette|| fb_logo.needs_directpalette){ palette=kmalloc(256*4,GFP_KERNEL); if(palette==NULL) return0; if(fb_logo.needs_truepalette) fb_set_logo_truepalette(info,logo,palette); else fb_set_logo_directpalette(info,logo,palette); saved_pseudo_palette=info->pseudo_palette; info->pseudo_palette=palette; } if(fb_logo.depth<=4){ logo_new=kmalloc(logo->width*logo->height,GFP_KERNEL); if(logo_new==NULL){ kfree(palette); if(saved_pseudo_palette) info->pseudo_palette=saved_pseudo_palette; return0; } image.data=logo_new; fb_set_logo(info,logo,logo_new,fb_logo.depth); } image.dx=0; image.dy=y; image.width=logo->width; image.height=logo->height; if(rotate){ logo_rotate=kmalloc(logo->width* logo->height,GFP_KERNEL); if(logo_rotate) fb_rotate_logo(info,logo_rotate,&image,rotate); } fb_do_show_logo(info,&image,rotate,n); kfree(palette); if(saved_pseudo_palette!=NULL) info->pseudo_palette=saved_pseudo_palette; kfree(logo_new); kfree(logo_rotate); returnlogo->height; } 参数logo指向了前面所准备的第一个开机画面的内容。这个函数首先根据参数logo的内容来构造一个fb_image结构体image,用来描述最终要显示的第一个开机画面。最后就调用函数fb_do_show_logo来真正执行渲染第一个开机画面的操作。函数fbcon_switch实现在文件kernel/goldfish/drivers/video/console/fbcon.c中,显示第一个开机画面的过程如下所示: staticvoidfb_do_show_logo(structfb_info*info,structfb_image*image, introtate,unsignedintnum) { unsignedintx; if(rotate==FB_ROTATE_UR){ for(x=0; x<num&&image->dx+image->width<=info->var.xres; x++){ info->fbops->fb_imageblit(info,image); image->dx+=image->width+8; } }elseif(rotate==FB_ROTATE_UD){ for(x=0;x<num&&image->dx>=0;x++){ info->fbops->fb_imageblit(info,image); image->dx-=image->width+8; } }elseif(rotate==FB_ROTATE_CW){ for(x=0; x<num&&image->dy+image->height<=info->var.yres; x++){ info->fbops->fb_imageblit(info,image); image->dy+=image->height+8; } }elseif(rotate==FB_ROTATE_CCW){ for(x=0;x<num&&image->dy>=0;x++){ info->fbops->fb_imageblit(info,image); image->dy-=image->height+8; } } } 参数rotate用来描述屏幕的当前旋转方向。屏幕旋转方向不同,第一个开机画面的渲染方式也有所不同。例如,当屏幕上下颠倒时(FB_ROTATE_UD),第一个开机画面的左右顺序就刚好调换过来,这时候就需要从右到左来渲染。其它三个方向FB_ROTATE_UR、FB_ROTATE_CW和FB_ROTATE_CCW分别表示没有旋转、顺时针旋转90度和逆时针旋转90度。 参数info用来描述要渲染的帧缓冲区硬件设备,它的成员变量fbops指向了一系列回调函数,用来操作帧缓冲区硬件设备,其中,回调函数fb_imageblit就是用来在指定的帧缓冲区硬件设备渲染指定的图像的。 至此,第一个开机画面的显示过程就分析完成了。 本文转自 Luoshengyang 51CTO博客,原文链接:http://blog.51cto.com/shyluo/967032,如需转载请自行联系原作者

优秀的个人博客,低调大师

在Linux系统新增加一块硬盘

今天公司测试Linux服务器硬盘不够用了,主要是mysql数据文件太大了,买了个500G的硬盘回来,这里记录下新加硬盘的方法 PS 测试服务器的主板太差劲了,没有多余的电源接口,只能把光驱的电源拿出来,才能让硬盘使用。 把硬盘装好后,我们用 fdisk -l 查看下: 图中可以看出 /dev/sdb 是500G,新加的硬盘。 接下来我用命令 fdisk sdb 进行分区,输入 p 查看新硬盘分区,如图: 可以用m命令来看fdisk命令的内部命令;n命令创建一个新分区;d命令删除一个存在的分区;p命令显示分区列表;t命令修改分区的类型ID号;l命令显示分区ID号的列表;a命令指定启动分区;w命令是将对分区表的修改存盘让它发生作用。 我们这里是创建新分区,所以输入 n 然后 e 是扩展分区,p 是主分区,我们输入 p 接下来的块数什么的,都输入 1 ,最后选择大小,Last cylinder or +size or +sizeM or +sizeK (1-60801, default 60801): +500GB //我们输入这个意思是分区大小为500G 最后输入 w 保存,如图: 然后在/dev/目录下就可以看到 sdb1 存在了。 分区完了之后,我们需要进行格式化,使用 mkfs -t ext3 /dev/sdb1 命令进行对sdb1格式化。如图: 上图格式化,我还在进行中,大约进行了一半。 格式化完了之后,我们就可以进行挂载分区了,我们先创建一个目录叫 data 然后把 /dev/sdb1 挂载到 /data 目录下,命令如下 mkdir /data mount /dev/sdb1 /data 最后使用 df -h 命令进行查看,修改 /etc/fstab 来进行自动加载。如图: 保存后,重启服务器,一切OK。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册