|
From: Nalli, S. <san...@hp...> - 2014-06-02 17:56:27
|
Thanks a lot.
Do you know why my /proc is empty in the guest
And why does the /proc/PID/exe NOT point to anything in
The host ? (PID is the pid of a dummy program running in UML)
From: enjoy mindful [mailto:enj...@gm...]
Sent: Friday, May 30, 2014 12:06 AM
To: Nalli, Sanketh
Cc: use...@li...
Subject: Re: [uml-user] invalid /proc/PID/exe in UML processes
let me answer your second question.
I did this analysis with kernel linux-3.12.6:
1) make ARCH=um cscope
2) search functions which called 'clone'
File Function Line
0 ubd_user.c start_io_thread 43 pid = clone(io_thread, (void *) sp, CLONE_FILES |
CLONE_VM, NULL);
1 helper.c start_io_thread 74 pid = clone(helper_child, (void *) sp, CLONE_VM, &data);
2 helper.c start_io_thread 124 pid = clone(proc, (void *) sp, flags, arg);
3 process.c start_userspace 300 pid = clone(userspace_tramp, (void *) sp, flags, (void *)
stub_stack);
4 lguest.c create_thread 1048 vq->thread = clone(do_thread, stack + 32768, CLONE_VM |
SIGCHLD, vq);
3) insert some printk statement in those function
4) build and run, then watch the booting process output
[root@localhost ~]# dmesg | grep 6436
[ 0.190000] run_helper_thread : clone success, pid = 6436
[root@localhost ~]# dmesg | grep 6437
[ 0.190000] start_io_thread - clone success : pid = 6437
[root@localhost ~]# dmesg | grep 6438
[ 0.190000] run_helper_thread : clone success, pid = 6438
[real@real runuml]$ ps -ef | grep patch
real 6423 1553 6 16:17 pts/0 00:00:02 ./linux_patched ubda=./Fedora20-x86-root_fs mem=256m
real 6436 6423 0 16:17 pts/0 00:00:00 ./linux_patched ubda=./Fedora20-x86-root_fs mem=256m
real 6437 6423 0 16:17 pts/0 00:00:00 ./linux_patched ubda=./Fedora20-x86-root_fs mem=256m
real 6438 6423 0 16:17 pts/0 00:00:00 ./linux_patched ubda=./Fedora20-x86-root_fs mem=256m
real 6439 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6459 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6479 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6492 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6565 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6567 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6572 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6573 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6576 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6605 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6619 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6621 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6707 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6715 6423 0 16:17 pts/0 00:00:00 [linux_patched]
real 6765 6423 0 16:18 pts/0 00:00:00 [linux_patched]
[root@localhost ~]# dmesg | grep proc
[ 0.090000] run_helper_thread : clone success, pid = 8387, proc=0806471d
[ 0.100000] run_helper_thread : clone success, pid = 8389, proc=080663a3
[real@real linux-3.12.6]$ grep 0806471d System.map
0806471d t aio_thread
[real@real linux-3.12.6]$ grep 080663a3 System.map
080663a3 t write_sigio_thread
so, the four processes are:
1) uml kernel main thread
2) aio_thread
3) io_thread
4) write_sigio_thread
On Fri, May 30, 2014 at 9:22 AM, Nalli, Sanketh <san...@hp...<mailto:san...@hp...>> wrote:
Hi,
So I start UML with the cmdline
./linux rootfstype=hostfs rw mem=1G init=/bin/bash
When the bash shell comes up, I run my prog : ./my_prog
6173 pts/8 00:00:00 linux
6180 pts/8 00:00:00 linux
6181 pts/8 00:00:00 linux
6182 pts/8 00:00:00 linux
6183 pts/8 00:00:00 linux
6188 pts/8 00:00:13 linux
The last item in the list with PID is 6188 is my program.
I can tell because my_prog increments a counter in an infinite loop
And consumes CPU cycles. It shows up on “top” as the dominant process.
My question:
1. /proc/6188/exe is invalid. Why ??
I mean, it doesn’t point to anything.
Shouldn’t it point to my_prog or something ?
2. What do the 4 UML processes 6173, 6180, 6181, 6182 do ? (6183 is /bin/bash whos “exe” symlink is also doesn’t point to anything !!)
3. When a UML process, say my_prog (PID 6188) makes a system call, where is the system call executed – is it within the addr space of 6173 (the UML kernel process) or 6188 (my_prog running in UML ??)
-Sanketh
------------------------------------------------------------------------------
Time is money. Stop wasting it! Get your web API in 5 minutes.
www.restlet.com/download<http://www.restlet.com/download>
http://p.sf.net/sfu/restlet
_______________________________________________
User-mode-linux-user mailing list
Use...@li...<mailto:Use...@li...>
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user
|