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:enjoymind...@gmail.com]
Sent: Friday, May 30, 2014 12:06 AM
To: Nalli, Sanketh
Cc: user-mode-linux-user@lists.sourceforge.net
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
<sanketh.na...@hp.com<mailto:sanketh.na...@hp.com>> 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
User-mode-linux-user@lists.sourceforge.net<mailto:User-mode-linux-user@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
User-mode-linux-user mailing list
User-mode-linux-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user