首页 > 编程知识 正文

bootargs怎么传递给内核,查看linux厂商文件

时间:2023-05-06 14:56:28 阅读:22178 作者:3924

1、/proc/partitions中存储有以sd开始的USB存储器的设备名,例如sda、sdb2等。

major主设备编号,例如USB存储器中有3个分区,主设备名为sda,major为8,分区的major也为8,minor为分区编号,sda1、sda2,minor值为1、2

sda的minor为0,name为设备名称,可以通过连接/dev./设备名称挂载到一个目录中。

blocks表示物理设备的逻辑块的大小

2、代码

sign_primacy函数标记主设备

read_proc_partition读取/proc/partitions

#包含

#包含

#包含

typedefstructparititions_info_s

{

unsigned long nMajor;

unsigned long nMinor;

无符号长块;

char ch设备名称[ 50 ];

}parititions_info_t;

{

sda不需要像sda sda1 sda2 sda3那样作为主设备装载

如果//sda中没有分区,则必须装载sda

if((null==pstupartitionsinfo ) |

(nDeviceNum=0)

{

printf((nparamerror ) n );

}

for(I=0; i nDeviceNum - 1; I )

{

if (nlastfindmajor==pstupartitionsinfo [ I ].n major )

{

继续;

}

for(j=I1; j nDeviceNum; j )

{

if (pstupartitionsinfo [ I ].n major!=pstupartitionsinfo [ j ].n major (/major必须相同才能进行比较

{

布雷克;

}

if (空!=strstr (pstupartitionsinfo [ j ].ch设备名称,pstupartitionsinfo [ I ].ch设备名称) )

{

nastfindmajor=pstupartitionsinfo [ I ].n major;

printf ((nzzh _ testprimacychdevicename=% s,nMajor[%lu] minor=%lu Flag=%dn ',

布雷克;

}

}

}

返回0;

}

{

mtdztfp=NULL;

unsigned long nMajor=0;

unsigned long nMinor=0;

unsigned long nBlocks=0;

char ch设备名称[ 50 ]={0};

char chBuffer[1024]={0};

if (空值==pstupartitionsinfo||

NULL==pnNum )

{

printf((nparamerror ) n );

}

FP=fopen(/proc/partitions )、(r );

if (空值==FP ) )。

{

printf ((n fopen/proc/partitions failed (n ) );

}

while(1)。

{

nFindDeviceFlag=0;

memset(chbuffer,0,sizeof ) (chbuffer );

if(null==fgets(chbuffer,sizeof ) chbuffer ),fp )

{

布雷克;

}

memset (ch设备名称,0,sizeof ) ch设备名称);

nsscanfnum=sscanf(chbuffer,' %Lu%Lu%[^n],nMajor,nMinor,nBlocks,chDeviceName );

if(4!=nSscanfNum )

{

继续;

}

if(0!=strncmp (ch设备名称,' sd ',strlen ) (sd ) )

{

继续;

}

memset (pstupartitionsinfo [ ndevicenum ],0,sizeof ) parititions_info_t );

strncpy (pstupartitionsinfo [ ndevicenum ].ch设备名称,ch设备名称,sizeof ) pstupartitionsinfo [ ndevicenum ].chdevice vice name

printf((nMajor )、nMinor )、nBlocks )、ch设备名称)、nmajor、nMinor、nBlocks

//查找设备

nDeviceNum;

处理if(ndevicenum=nMaxNum )//最多nmaxnum个

{

流量(FP );

sign _ primacy (pstupartitionsinfo,nDeviceNum;

返回0;

}

}

流量(FP );

是if(ndevicenum0)

{

sign _ primacy (pstupartitionsinfo,nDeviceNum;

}

返回0;

}

{

pari titions _ info _ tstupartitionsinfo [ 30 ]={0};

read _ proc _ partition (stupartitionsinfo,nMaxNum,nNum );

printf((nNum(%d ) ) n ),nnum );

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。