The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/cddl/contrib/opensolaris/uts/common/sys/taskq.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * CDDL HEADER START
    3  *
    4  * The contents of this file are subject to the terms of the
    5  * Common Development and Distribution License (the "License").
    6  * You may not use this file except in compliance with the License.
    7  *
    8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
    9  * or http://www.opensolaris.org/os/licensing.
   10  * See the License for the specific language governing permissions
   11  * and limitations under the License.
   12  *
   13  * When distributing Covered Code, include this CDDL HEADER in each
   14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
   15  * If applicable, add the following below this CDDL HEADER, with the
   16  * fields enclosed by brackets "[]" replaced with your own identifying
   17  * information: Portions Copyright [yyyy] [name of copyright owner]
   18  *
   19  * CDDL HEADER END
   20  */
   21 /*
   22  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
   23  * Use is subject to license terms.
   24  */
   25 
   26 #ifndef _SYS_TASKQ_H
   27 #define _SYS_TASKQ_H
   28 
   29 #include <sys/types.h>
   30 #include <sys/proc.h>
   31 #include <sys/taskqueue.h>
   32 
   33 #ifdef  __cplusplus
   34 extern "C" {
   35 #endif
   36 
   37 #define TASKQ_NAMELEN   31
   38 
   39 struct taskqueue;
   40 struct taskq {
   41         struct taskqueue        *tq_queue;
   42 };
   43 
   44 typedef struct taskq taskq_t;
   45 typedef uintptr_t taskqid_t;
   46 typedef void (task_func_t)(void *);
   47 
   48 typedef struct taskq_ent {
   49         struct task      tqent_task;
   50         task_func_t     *tqent_func;
   51         void            *tqent_arg;
   52 } taskq_ent_t;
   53 
   54 struct proc;
   55 
   56 /*
   57  * Public flags for taskq_create(): bit range 0-15
   58  */
   59 #define TASKQ_PREPOPULATE       0x0001  /* Prepopulate with threads and data */
   60 #define TASKQ_CPR_SAFE          0x0002  /* Use CPR safe protocol */
   61 #define TASKQ_DYNAMIC           0x0004  /* Use dynamic thread scheduling */
   62 #define TASKQ_THREADS_CPU_PCT   0x0008  /* number of threads as % of ncpu */
   63 #define TASKQ_DC_BATCH          0x0010  /* Taskq uses SDC in batch mode */
   64 
   65 /*
   66  * Flags for taskq_dispatch. TQ_SLEEP/TQ_NOSLEEP should be same as
   67  * KM_SLEEP/KM_NOSLEEP.
   68  */
   69 #define TQ_SLEEP        0x00    /* Can block for memory */
   70 #define TQ_NOSLEEP      0x01    /* cannot block for memory; may fail */
   71 #define TQ_NOQUEUE      0x02    /* Do not enqueue if can't dispatch */
   72 #define TQ_NOALLOC      0x04    /* cannot allocate memory; may fail */
   73 #define TQ_FRONT        0x08    /* Put task at the front of the queue */
   74 
   75 #define TASKQID_INVALID         ((taskqid_t)0)
   76  
   77 #ifdef _KERNEL
   78 
   79 extern taskq_t *system_taskq;
   80 
   81 void    taskq_init(void);
   82 void    taskq_mp_init(void);
   83 
   84 taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t);
   85 taskq_t *taskq_create_instance(const char *, int, int, pri_t, int, int, uint_t);
   86 taskq_t *taskq_create_proc(const char *, int, pri_t, int, int,
   87     struct proc *, uint_t);
   88 taskq_t *taskq_create_sysdc(const char *, int, int, int,
   89     struct proc *, uint_t, uint_t);
   90 taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t);
   91 void    taskq_dispatch_ent(taskq_t *, task_func_t, void *, uint_t,
   92     taskq_ent_t *);
   93 void    nulltask(void *);
   94 void    taskq_destroy(taskq_t *);
   95 void    taskq_wait(taskq_t *);
   96 void    taskq_wait_id(taskq_t *, taskqid_t);
   97 void    taskq_suspend(taskq_t *);
   98 int     taskq_suspended(taskq_t *);
   99 void    taskq_resume(taskq_t *);
  100 int     taskq_member(taskq_t *, kthread_t *);
  101 
  102 #endif  /* _KERNEL */
  103 
  104 #ifdef  __cplusplus
  105 }
  106 #endif
  107 
  108 #endif  /* _SYS_TASKQ_H */

Cache object: c064591b293b72af7f16f9814da7a42a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.