Hi all,
 
I modified the /init/main.c to the following.
I skipped executing the "init" program.
But the program will stop after print "First Kernel thread".
Why??
 
Should I run the init program first or I forget to initialize something?
I try to change the library version, and the error still exist.
 
P.S  I use Mips r39xx machine.
 
                                                                                                        Green
 
------------------------</init/main.c>----------------------------
static int FirstKernelThread(void)
{
 printk("First Kernel thread!!\n");
 execve("/bin/pthread",argv_init,envp_init);
 return 1;
}
 
static int init(void)
{
...
...
// execve("/sbin/init",argv_init,envp_init);
// execve("/etc/init",argv_init,envp_init);
// execve("/bin/init",argv_init,envp_init);
// execve("/sbin/sulogin",argv_init,envp_init);
// execve("/bin/bash",argv_init,envp_init);
 
/* create a kernel thread to run my program pthread */
 kernel_thread(FirstKernelThread, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
...
}
 
 
--------------------<testpthread.c>---------------------------
/*
 2001/03/14 Lin-Ming Wan(Green)
 */
 
#include <stdio.h>
#include <pthread.h>
 
int FirstThread(void)
{
 printf("test thread!!");
 return 1;
}
 
int main(void)
{
 pthread_t MyThread;
 
 /* Call Thread */
 printf("-------> FirstThread\n");
 pthread_create(    &MyThread,
       (pthread_attr_t *) NULL,
      (void*)FirstThread,
      NULL );
/*Wait for child process*/
 pthread_join( MyThread, NULL);
 return 1;
}

Reply via email to