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>
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://p.sf.net/sfu/restlet
> _______________________________________________
> User-mode-linux-user mailing list
> User-mode-linux-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user
>
>
------------------------------------------------------------------------------
Time is money. Stop wasting it! Get your web API in 5 minutes.
www.restlet.com/download
http://p.sf.net/sfu/restlet
_______________________________________________
User-mode-linux-user mailing list
User-mode-linux-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user

Reply via email to