1*5d5562f5SEiji Ota /*
2*5d5562f5SEiji Ota  * CDDL HEADER START
3*5d5562f5SEiji Ota  *
4*5d5562f5SEiji Ota  * The contents of this file are subject to the terms of the
5*5d5562f5SEiji Ota  * Common Development and Distribution License (the "License").
6*5d5562f5SEiji Ota  * You may not use this file except in compliance with the License.
7*5d5562f5SEiji Ota  *
8*5d5562f5SEiji Ota  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*5d5562f5SEiji Ota  * or http://www.opensolaris.org/os/licensing.
10*5d5562f5SEiji Ota  * See the License for the specific language governing permissions
11*5d5562f5SEiji Ota  * and limitations under the License.
12*5d5562f5SEiji Ota  *
13*5d5562f5SEiji Ota  * When distributing Covered Code, include this CDDL HEADER in each
14*5d5562f5SEiji Ota  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*5d5562f5SEiji Ota  * If applicable, add the following below this CDDL HEADER, with the
16*5d5562f5SEiji Ota  * fields enclosed by brackets "[]" replaced with your own identifying
17*5d5562f5SEiji Ota  * information: Portions Copyright [yyyy] [name of copyright owner]
18*5d5562f5SEiji Ota  *
19*5d5562f5SEiji Ota  * CDDL HEADER END
20*5d5562f5SEiji Ota  */
21*5d5562f5SEiji Ota /*
22*5d5562f5SEiji Ota  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
23*5d5562f5SEiji Ota  */
24*5d5562f5SEiji Ota 
25*5d5562f5SEiji Ota #ifndef _RDSV3_AF_THR_H
26*5d5562f5SEiji Ota #define	_RDSV3_AF_THR_H
27*5d5562f5SEiji Ota 
28*5d5562f5SEiji Ota /*
29*5d5562f5SEiji Ota  * This file is only present in Solaris
30*5d5562f5SEiji Ota  */
31*5d5562f5SEiji Ota 
32*5d5562f5SEiji Ota #ifdef __cplusplus
33*5d5562f5SEiji Ota extern "C" {
34*5d5562f5SEiji Ota #endif
35*5d5562f5SEiji Ota 
36*5d5562f5SEiji Ota #include <sys/types.h>
37*5d5562f5SEiji Ota #include <sys/sunddi.h>
38*5d5562f5SEiji Ota #include <sys/callb.h>
39*5d5562f5SEiji Ota #include <sys/cpuvar.h>
40*5d5562f5SEiji Ota #include <sys/cpupart.h>
41*5d5562f5SEiji Ota #include <sys/processor.h>
42*5d5562f5SEiji Ota 
43*5d5562f5SEiji Ota typedef struct rdsv3_af_grp_s rdsv3_af_grp_t;
44*5d5562f5SEiji Ota typedef struct rdsv3_af_thr_s rdsv3_af_thr_t;
45*5d5562f5SEiji Ota typedef void (*rdsv3_af_thr_drain_func_t)(void *);
46*5d5562f5SEiji Ota 
47*5d5562f5SEiji Ota void rdsv3_af_init(dev_info_t *dip);
48*5d5562f5SEiji Ota /*
49*5d5562f5SEiji Ota  * create flags.
50*5d5562f5SEiji Ota  */
51*5d5562f5SEiji Ota #define	SCQ_DEFAULT		0x0000
52*5d5562f5SEiji Ota #define	SCQ_HCA_BIND_CPU	0x0001	/* bind hca to a cpu */
53*5d5562f5SEiji Ota #define	SCQ_INTR_BIND_CPU	0x0002	/* bind soft cq to a cpu */
54*5d5562f5SEiji Ota #define	SCQ_WRK_BIND_CPU	0x0004	/* bind worker to a cpu */
55*5d5562f5SEiji Ota 
56*5d5562f5SEiji Ota rdsv3_af_grp_t *rdsv3_af_grp_create(ibt_hca_hdl_t hca, uint64_t id);
57*5d5562f5SEiji Ota void rdsv3_af_grp_destroy(rdsv3_af_grp_t *hcagp);
58*5d5562f5SEiji Ota void rdsv3_af_grp_draw(rdsv3_af_grp_t *hcagp);
59*5d5562f5SEiji Ota ibt_sched_hdl_t rdsv3_af_grp_get_sched(rdsv3_af_grp_t *hcagp);
60*5d5562f5SEiji Ota 
61*5d5562f5SEiji Ota rdsv3_af_thr_t *rdsv3_af_thr_create(rdsv3_af_thr_drain_func_t fn, void *data,
62*5d5562f5SEiji Ota     uint_t flag, rdsv3_af_grp_t *hcagp);
63*5d5562f5SEiji Ota rdsv3_af_thr_t *rdsv3_af_intr_thr_create(rdsv3_af_thr_drain_func_t fn,
64*5d5562f5SEiji Ota     void *data, uint_t flag, rdsv3_af_grp_t *hcagp, ibt_cq_hdl_t ibt_cq_hdl);
65*5d5562f5SEiji Ota 
66*5d5562f5SEiji Ota void rdsv3_af_thr_destroy(rdsv3_af_thr_t *ringp);
67*5d5562f5SEiji Ota void rdsv3_af_thr_fire(rdsv3_af_thr_t *ringp);
68*5d5562f5SEiji Ota 
69*5d5562f5SEiji Ota #ifdef	__cplusplus
70*5d5562f5SEiji Ota }
71*5d5562f5SEiji Ota #endif
72*5d5562f5SEiji Ota 
73*5d5562f5SEiji Ota #endif /* _RDSV3_AF_THR_H */
74