Print this page
3625 we only need one thread_create_intr


 656 extern  void    restore_mstate(kthread_t *);
 657 extern  void    term_mstate(kthread_t *);
 658 extern  void    estimate_msacct(kthread_t *, hrtime_t);
 659 extern  void    disable_msacct(proc_t *);
 660 extern  hrtime_t mstate_aggr_state(proc_t *, int);
 661 extern  hrtime_t mstate_thread_onproc_time(kthread_t *);
 662 extern  void    mstate_systhread_times(kthread_t *, hrtime_t *, hrtime_t *);
 663 extern  void    syscall_mstate(int, int);
 664 
 665 extern  uint_t  cpu_update_pct(kthread_t *, hrtime_t);
 666 
 667 extern void     set_proc_pre_sys(proc_t *p);
 668 extern void     set_proc_post_sys(proc_t *p);
 669 extern void     set_proc_sys(proc_t *p);
 670 extern void     set_proc_ast(proc_t *p);
 671 extern void     set_all_proc_sys(void);
 672 extern void     set_all_zone_usr_proc_sys(zoneid_t);
 673 
 674 /* thread function prototypes */
 675 
 676 extern  kthread_t       *thread_create(
 677         caddr_t         stk,
 678         size_t          stksize,
 679         void            (*proc)(),
 680         void            *arg,
 681         size_t          len,
 682         proc_t          *pp,
 683         int             state,
 684         pri_t           pri);
 685 extern  void    thread_exit(void) __NORETURN;
 686 extern  void    thread_free(kthread_t *);
 687 extern  void    thread_rele(kthread_t *);
 688 extern  void    thread_join(kt_did_t);
 689 extern  int     reaper(void);
 690 extern  void    installctx(kthread_t *, void *, void (*)(), void (*)(),
 691     void (*)(), void (*)(), void (*)(), void (*)());
 692 extern  int     removectx(kthread_t *, void *, void (*)(), void (*)(),
 693     void (*)(), void (*)(), void (*)(), void (*)());
 694 extern  void    savectx(kthread_t *);
 695 extern  void    restorectx(kthread_t *);
 696 extern  void    forkctx(kthread_t *, kthread_t *);
 697 extern  void    lwp_createctx(kthread_t *, kthread_t *);
 698 extern  void    exitctx(kthread_t *);
 699 extern  void    freectx(kthread_t *, int);
 700 extern  void    installpctx(proc_t *, void *, void (*)(), void (*)(),
 701     void (*)(), void (*)(), void (*)());
 702 extern  int     removepctx(proc_t *, void *, void (*)(), void (*)(),
 703     void (*)(), void (*)(), void (*)());
 704 extern  void    savepctx(proc_t *);
 705 extern  void    restorepctx(proc_t *);
 706 extern  void    forkpctx(proc_t *, proc_t *);
 707 extern  void    exitpctx(proc_t *);
 708 extern  void    freepctx(proc_t *, int);
 709 extern  kthread_t *thread_unpin(void);
 710 extern  void    thread_init(void);
 711 extern  void    thread_load(kthread_t *, void (*)(), caddr_t, size_t);
 712 
 713 extern  void    tsd_create(uint_t *, void (*)(void *));
 714 extern  void    tsd_destroy(uint_t *);
 715 extern  void    *tsd_getcreate(uint_t *, void (*)(void *), void *(*)(void));
 716 extern  void    *tsd_get(uint_t);
 717 extern  int     tsd_set(uint_t, void *);
 718 extern  void    tsd_exit(void);
 719 extern  void    *tsd_agent_get(kthread_t *, uint_t);
 720 extern  int     tsd_agent_set(kthread_t *, uint_t, void *);
 721 
 722 /* lwp function prototypes */
 723 
 724 extern kthread_t *lwp_kernel_create(proc_t *, void (*)(), void *, int, pri_t);
 725 extern  klwp_t          *lwp_create(
 726         void            (*proc)(),
 727         caddr_t         arg,
 728         size_t          len,
 729         proc_t          *p,
 730         int             state,
 731         int             pri,
 732         const k_sigset_t *smask,
 733         int             cid,
 734         id_t            lwpid);
 735 extern  kthread_t *idtot(proc_t *, id_t);
 736 extern  void    lwp_hash_in(proc_t *, lwpent_t *, tidhash_t *, uint_t, int);
 737 extern  void    lwp_hash_out(proc_t *, id_t);
 738 extern  lwpdir_t *lwp_hash_lookup(proc_t *, id_t);
 739 extern  lwpdir_t *lwp_hash_lookup_and_lock(proc_t *, id_t, kmutex_t **);
 740 extern  void    lwp_create_done(kthread_t *);
 741 extern  void    lwp_exit(void);
 742 extern  void    lwp_pcb_exit(void);
 743 extern  void    lwp_cleanup(void);
 744 extern  int     lwp_suspend(kthread_t *);
 745 extern  void    lwp_continue(kthread_t *);
 746 extern  void    holdlwp(void);
 747 extern  void    stoplwp(void);
 748 extern  int     holdlwps(int);
 749 extern  int     holdwatch(void);
 750 extern  void    pokelwps(proc_t *);
 751 extern  void    continuelwps(proc_t *);
 752 extern  int     exitlwps(int);
 753 extern  void    lwp_ctmpl_copy(klwp_t *, klwp_t *);
 754 extern  void    lwp_ctmpl_clear(klwp_t *);




 656 extern  void    restore_mstate(kthread_t *);
 657 extern  void    term_mstate(kthread_t *);
 658 extern  void    estimate_msacct(kthread_t *, hrtime_t);
 659 extern  void    disable_msacct(proc_t *);
 660 extern  hrtime_t mstate_aggr_state(proc_t *, int);
 661 extern  hrtime_t mstate_thread_onproc_time(kthread_t *);
 662 extern  void    mstate_systhread_times(kthread_t *, hrtime_t *, hrtime_t *);
 663 extern  void    syscall_mstate(int, int);
 664 
 665 extern  uint_t  cpu_update_pct(kthread_t *, hrtime_t);
 666 
 667 extern void     set_proc_pre_sys(proc_t *p);
 668 extern void     set_proc_post_sys(proc_t *p);
 669 extern void     set_proc_sys(proc_t *p);
 670 extern void     set_proc_ast(proc_t *p);
 671 extern void     set_all_proc_sys(void);
 672 extern void     set_all_zone_usr_proc_sys(zoneid_t);
 673 
 674 /* thread function prototypes */
 675 
 676 extern  kthread_t *thread_create(caddr_t, size_t, void (*)(), void *,
 677     size_t, proc_t *, int, pri_t);







 678 extern  void    thread_exit(void) __NORETURN;
 679 extern  void    thread_free(kthread_t *);
 680 extern  void    thread_rele(kthread_t *);
 681 extern  void    thread_join(kt_did_t);
 682 extern  int     reaper(void);
 683 extern  void    installctx(kthread_t *, void *, void (*)(), void (*)(),
 684     void (*)(), void (*)(), void (*)(), void (*)());
 685 extern  int     removectx(kthread_t *, void *, void (*)(), void (*)(),
 686     void (*)(), void (*)(), void (*)(), void (*)());
 687 extern  void    savectx(kthread_t *);
 688 extern  void    restorectx(kthread_t *);
 689 extern  void    forkctx(kthread_t *, kthread_t *);
 690 extern  void    lwp_createctx(kthread_t *, kthread_t *);
 691 extern  void    exitctx(kthread_t *);
 692 extern  void    freectx(kthread_t *, int);
 693 extern  void    installpctx(proc_t *, void *, void (*)(), void (*)(),
 694     void (*)(), void (*)(), void (*)());
 695 extern  int     removepctx(proc_t *, void *, void (*)(), void (*)(),
 696     void (*)(), void (*)(), void (*)());
 697 extern  void    savepctx(proc_t *);
 698 extern  void    restorepctx(proc_t *);
 699 extern  void    forkpctx(proc_t *, proc_t *);
 700 extern  void    exitpctx(proc_t *);
 701 extern  void    freepctx(proc_t *, int);
 702 extern  kthread_t *thread_unpin(void);
 703 extern  void    thread_init(void);
 704 extern  void    thread_load(kthread_t *, void (*)(), caddr_t, size_t);
 705 
 706 extern  void    tsd_create(uint_t *, void (*)(void *));
 707 extern  void    tsd_destroy(uint_t *);
 708 extern  void    *tsd_getcreate(uint_t *, void (*)(void *), void *(*)(void));
 709 extern  void    *tsd_get(uint_t);
 710 extern  int     tsd_set(uint_t, void *);
 711 extern  void    tsd_exit(void);
 712 extern  void    *tsd_agent_get(kthread_t *, uint_t);
 713 extern  int     tsd_agent_set(kthread_t *, uint_t, void *);
 714 
 715 /* lwp function prototypes */
 716 
 717 extern  kthread_t *lwp_kernel_create(proc_t *, void (*)(), void *, int, pri_t);
 718 extern  klwp_t  *lwp_create(void (*)(), caddr_t, size_t, proc_t *, int, int,
 719     const k_sigset_t *, int, id_t);








 720 extern  kthread_t *idtot(proc_t *, id_t);
 721 extern  void    lwp_hash_in(proc_t *, lwpent_t *, tidhash_t *, uint_t, int);
 722 extern  void    lwp_hash_out(proc_t *, id_t);
 723 extern  lwpdir_t *lwp_hash_lookup(proc_t *, id_t);
 724 extern  lwpdir_t *lwp_hash_lookup_and_lock(proc_t *, id_t, kmutex_t **);
 725 extern  void    lwp_create_done(kthread_t *);
 726 extern  void    lwp_exit(void);
 727 extern  void    lwp_pcb_exit(void);
 728 extern  void    lwp_cleanup(void);
 729 extern  int     lwp_suspend(kthread_t *);
 730 extern  void    lwp_continue(kthread_t *);
 731 extern  void    holdlwp(void);
 732 extern  void    stoplwp(void);
 733 extern  int     holdlwps(int);
 734 extern  int     holdwatch(void);
 735 extern  void    pokelwps(proc_t *);
 736 extern  void    continuelwps(proc_t *);
 737 extern  int     exitlwps(int);
 738 extern  void    lwp_ctmpl_copy(klwp_t *, klwp_t *);
 739 extern  void    lwp_ctmpl_clear(klwp_t *);