I've just stumbled on the follwoing problem with ucLinux
Lets say task A does:
the code doing the system call will try to store the error code into
the errno variable
(well actiually the errno is defined as *get_errno_addr())
but this varible is sitting in the data segment of the parent task!!!!
I have couple of ideas how to solve this problem
introduce a new system call "spawnxxx" which combines internally vfork and
2.1 declare a private data block in the kernel task structure,
2.2 make following changets to crt0.s
start: br next
2.3 binfmt_flat loader will patch the jmp instruction with address
of the kernel routine kernel_get_thread_data:
2.4 get_errno_addr becomes
This appoach will eventually allow as to build a multi-threaded ucLibc....
What do you think?
This message resent by the firstname.lastname@example.org list server http://www.uClinux.com/
This archive was generated by hypermail 2b30 : Sun Apr 07 2002 - 00:01:34 EST