Date: Thu, 12 Dec 2002 18:21:08 +0800 From: "ouyang kai" <oykai@msn.com> To: julian@elischer.org Cc: hackers@FreeBSD.org Subject: Re: Some problems about KSE Message-ID: <F20Rqf69aZbLAX3cf3e00010b50@hotmail.com>
next in thread | raw e-mail | index | archive | help
>From: Julian Elischer <julian@elischer.org> >Well it's still being written so you may be a bit ahead of yourself.. >cc ... -lkse .... >no use -lkse until we have if more finished... then it will become >-lpthread >the fix was committed yesterday. >the UTS fills in km_func before creating the KSE and loaded by the >kernel. At THIS time it is never looked at again, but that could change >in the future. I have cvsup my box today, the 'ksetest' works nice. But only one time, when I am excuting the 'ksetest'on ptty0, I am excuting 'tar zcvf src1212.tgz ./src' on ptty1. The box crash. I do not know why. I want to repeat the problem, but the box works well. so, I think it may be irrelevant with KSE. I have studied the 'ksetest' code, if the app programmers use KSE as your method, I think it is too hard.:) In the furture, whether do the app programmers never use the round robin KSE functions(kse_create, kse_release, etc.) directly? Only the pthread lib(UTS) considers calling KSE functions? >(see how ksetest is written) I do not know whether my understanding about 'ksetest' is right, please point out. in 'ksetest' program: you simulated the UTS mechanism. In this mechanism: 1. one KSEG is a queue(runq_init); 2. every thread(in userland) is managed by the uts_data structure(init_uts); 3. through thread_start, you start a child thread, the child thread function is 'aaaa'. 4. through start_uts, you setup a bridge between UTS and KT(kse_create). I wants to draw my understanding about this 'ksetest', but I can not finish it.:( User Program (kse_thr_mailbox) UTS (kse_mailbox) KT ksetest queue1 KSEG1 child1 data1 (have a bridge) child2 data2 (have a bridge) queue2 KSEG2 child3 data3 (have a bridge) child4 child5 data4 (have a bridge with KSEG1 ???) In the main() function, I have some puzzles: why do you start child thread with 'data1' two times and with 'data3' three times? I think the 'uts_data' should the the management structure in UTS, why use the same 'uts_data' instances manage one queue? why could not use 'data2' or 'data4' to create child thread? why did you call "start_uts(&data4, 0);" by "thread_start", what is your purpose? Why the 'data4' is in queue2 but belongs to KSEG1? So, I am puzzled about the relationship between queue and KSEG. Maybe, from beginning, I am wrong? :( > >It is indetirminate because that code has not been written. >At this time the signal will be delivered in the normal way >to the next thread to enter the kernel in any way. >This actually works for a surprising number of programs as long as they >do not need to do any >thread_specific actions in the handler. >How to route the signals to a specific thread is still under discussion. Oh, later... _________________________________________________________________ Tired of spam? Get advanced junk mail protection with MSN 8. http://join.msn.com/?page=features/junkmail To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F20Rqf69aZbLAX3cf3e00010b50>