From: Andy P. <at...@us...> - 2001-09-16 15:19:30
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/boot/tools In directory usw-pr-cvs1:/tmp/cvs-serv1072/tools Added Files: setcmdline.c Log Message: Put the kernel command line in first part of head.S Add a small tool called from makefile to set the command line --- NEW FILE --- /* write a command line into a header block */ /* atp Sept 2001 */ #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <string.h> #include <stdio.h> #define COMMAND_LINE_SIZE 256 #define COMMAND_LINE_OFFSET 0x204 int main (int argc, char *argv[]) { int kern_fd; char buffer[COMMAND_LINE_SIZE]; if (called_as(argv[0],"showcmdline")) { if (argc < 2) { printf ("usage: showcmdline kernel_image\n"); exit(1); } }else { if (argc < 3) { printf ("usage: setcmdline kernel_image \"command line\"\n"); exit(1); } } if ((kern_fd=open(argv[1], O_RDWR))<0) { perror(argv[1]); exit(1); } memset(buffer,0,COMMAND_LINE_SIZE); if (called_as(argv[0],"setcmdline")) { if (strlen(argv[2])>=COMMAND_LINE_SIZE) { printf("Warning: Command Line truncated to %d bytes!\n",COMMAND_LINE_SIZE-1); } strncpy(buffer,argv[2],(COMMAND_LINE_SIZE-1)); lseek(kern_fd,COMMAND_LINE_OFFSET,SEEK_SET); printf("\n\nSetting kernel command line to:\n\t%s\n\n",buffer); write(kern_fd,buffer,strlen(buffer)); } else { lseek(kern_fd,COMMAND_LINE_OFFSET,SEEK_SET); read(kern_fd,buffer,(COMMAND_LINE_SIZE-1)); printf("\nKernel command line is:\n\t%s\n",buffer); } close(kern_fd); } int called_as(char *str1, char *str2) { char *tmp; tmp = strrchr(str1,'/'); if (tmp==NULL) tmp=str1; else tmp++; // printf("%s %s, %s\n",str1,str2,tmp); return (!strncmp(tmp,str2,strlen(str2))); } |