Date: Wed, 20 May 2009 05:39:41 +0000 (UTC) From: Kip Macy <kmacy@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r192421 - in user/kmacy/releng_7_2_fcs/sys: kern sys Message-ID: <200905200539.n4K5dfB2020392@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: kmacy Date: Wed May 20 05:39:41 2009 New Revision: 192421 URL: http://svn.freebsd.org/changeset/base/192421 Log: Add new kthread_create_pri function which allows users to pass a priority when creating a thread Modified: user/kmacy/releng_7_2_fcs/sys/kern/kern_kthread.c user/kmacy/releng_7_2_fcs/sys/sys/kthread.h Modified: user/kmacy/releng_7_2_fcs/sys/kern/kern_kthread.c ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/kern/kern_kthread.c Wed May 20 04:26:19 2009 (r192420) +++ user/kmacy/releng_7_2_fcs/sys/kern/kern_kthread.c Wed May 20 05:39:41 2009 (r192421) @@ -72,12 +72,11 @@ kproc_start(udata) * flags are flags to fork1 (in unistd.h) * fmt and following will be *printf'd into (*newpp)->p_comm (for ps, etc.). */ -int -kthread_create(void (*func)(void *), void *arg, - struct proc **newpp, int flags, int pages, const char *fmt, ...) +static int +kthread_create_pri_v(void (*func)(void *), void *arg, + struct proc **newpp, int flags, int pages, int prio, const char *comm) { int error; - va_list ap; struct thread *td; struct proc *p2; @@ -101,19 +100,18 @@ kthread_create(void (*func)(void *), voi mtx_unlock(&p2->p_sigacts->ps_mtx); PROC_UNLOCK(p2); - /* set up arg0 for 'ps', et al */ - va_start(ap, fmt); - vsnprintf(p2->p_comm, sizeof(p2->p_comm), fmt, ap); - va_end(ap); + memcpy(p2->p_comm, comm, sizeof(p2->p_comm)); + td = FIRST_THREAD_IN_PROC(p2); + memcpy(td->td_name, comm, sizeof(td->td_name)); /* call the processes' main()... */ - td = FIRST_THREAD_IN_PROC(p2); cpu_set_fork_handler(td, func, arg); TD_SET_CAN_RUN(td); /* Delay putting it on the run queue until now. */ if (!(flags & RFSTOPPED)) { thread_lock(td); + sched_prio(td, prio); sched_add(td, SRQ_BORING); thread_unlock(td); } @@ -121,6 +119,35 @@ kthread_create(void (*func)(void *), voi return 0; } +int +kthread_create_pri(void (*func)(void *), void *arg, + struct proc **newpp, int flags, int pages, int prio, const char *fmt, ...) +{ + va_list ap; + char p_comm[MAXCOMLEN + 1]; /* (b) Process name. XXX */ + + /* set up arg0 for 'ps', et al */ + va_start(ap, fmt); + vsnprintf(p_comm, sizeof(p_comm), fmt, ap); + va_end(ap); + + return (kthread_create_pri_v(func, arg, newpp, flags, pages, prio, p_comm)); +} + +int +kthread_create(void (*func)(void *), void *arg, + struct proc **newpp, int flags, int pages, const char *fmt, ...) +{ + va_list ap; + char p_comm[MAXCOMLEN + 1]; /* (b) Process name. XXX */ + + /* set up arg0 for 'ps', et al */ + va_start(ap, fmt); + vsnprintf(p_comm, sizeof(p_comm), fmt, ap); + va_end(ap); + return (kthread_create_pri_v(func, arg, newpp, flags, pages, 0, p_comm)); +} + void kthread_exit(int ecode) { Modified: user/kmacy/releng_7_2_fcs/sys/sys/kthread.h ============================================================================== --- user/kmacy/releng_7_2_fcs/sys/sys/kthread.h Wed May 20 04:26:19 2009 (r192420) +++ user/kmacy/releng_7_2_fcs/sys/sys/kthread.h Wed May 20 05:39:41 2009 (r192421) @@ -46,6 +46,8 @@ void kproc_shutdown(void *, int); void kproc_start(const void *); int kthread_create(void (*)(void *), void *, struct proc **, int flags, int pages, const char *, ...) __printflike(6, 7); +int kthread_create_pri(void (*)(void *), void *, struct proc **, + int flags, int pages, int prio, const char *, ...) __printflike(7, 8); void kthread_exit(int) __dead2; int kthread_resume(struct proc *); /* XXXKSE */ int kthread_suspend(struct proc *, int); /* XXXKSE */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200905200539.n4K5dfB2020392>