efsys.h (278221) | efsys.h (278250) |
---|---|
1/*- 2 * Copyright (c) 2010-2011 Solarflare Communications, Inc. 3 * All rights reserved. 4 * 5 * This software was developed in part by Philip Paeps under contract for 6 * Solarflare Communications, Inc. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 12 unchanged lines hidden (view full) --- 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * | 1/*- 2 * Copyright (c) 2010-2011 Solarflare Communications, Inc. 3 * All rights reserved. 4 * 5 * This software was developed in part by Philip Paeps under contract for 6 * Solarflare Communications, Inc. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 12 unchanged lines hidden (view full) --- 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * |
29 * $FreeBSD: head/sys/dev/sfxge/common/efsys.h 278221 2015-02-04 20:03:57Z arybchik $ | 29 * $FreeBSD: head/sys/dev/sfxge/common/efsys.h 278250 2015-02-05 11:39:15Z arybchik $ |
30 */ 31 32#ifndef _SYS_EFSYS_H 33#define _SYS_EFSYS_H 34 35#ifdef __cplusplus 36extern "C" { 37#endif --- 466 unchanged lines hidden (view full) --- 504 _NOTE(CONSTANTCONDITION) \ 505 } while (B_FALSE) 506 507#define EFSYS_MEM_ADDR(_esmp) \ 508 ((_esmp)->esm_addr) 509 510/* BAR */ 511 | 30 */ 31 32#ifndef _SYS_EFSYS_H 33#define _SYS_EFSYS_H 34 35#ifdef __cplusplus 36extern "C" { 37#endif --- 466 unchanged lines hidden (view full) --- 504 _NOTE(CONSTANTCONDITION) \ 505 } while (B_FALSE) 506 507#define EFSYS_MEM_ADDR(_esmp) \ 508 ((_esmp)->esm_addr) 509 510/* BAR */ 511 |
512#define SFXGE_LOCK_NAME_MAX 16 513 |
|
512typedef struct efsys_bar_s { 513 struct mtx esb_lock; | 514typedef struct efsys_bar_s { 515 struct mtx esb_lock; |
516 char esb_lock_name[SFXGE_LOCK_NAME_MAX]; |
|
514 bus_space_tag_t esb_tag; 515 bus_space_handle_t esb_handle; 516 int esb_rid; 517 struct resource *esb_res; 518} efsys_bar_t; 519 | 517 bus_space_tag_t esb_tag; 518 bus_space_handle_t esb_handle; 519 int esb_rid; 520 struct resource *esb_res; 521} efsys_bar_t; 522 |
520#define SFXGE_BAR_LOCK_INIT(_esbp, _name) \ 521 mtx_init(&(_esbp)->esb_lock, (_name), NULL, MTX_DEF) | 523#define SFXGE_BAR_LOCK_INIT(_esbp, _ifname) \ 524 do { \ 525 snprintf((_esbp)->esb_lock_name, \ 526 sizeof((_esbp)->esb_lock_name), \ 527 "%s:bar", (_ifname)); \ 528 mtx_init(&(_esbp)->esb_lock, (_esbp)->esb_lock_name, \ 529 NULL, MTX_DEF); \ 530 _NOTE(CONSTANTCONDITION) \ 531 } while (B_FALSE) |
522#define SFXGE_BAR_LOCK_DESTROY(_esbp) \ 523 mtx_destroy(&(_esbp)->esb_lock) 524#define SFXGE_BAR_LOCK(_esbp) \ 525 mtx_lock(&(_esbp)->esb_lock) 526#define SFXGE_BAR_UNLOCK(_esbp) \ 527 mtx_unlock(&(_esbp)->esb_lock) 528 529#define EFSYS_BAR_READD(_esbp, _offset, _edp, _lock) \ --- 186 unchanged lines hidden (view full) --- 716 (void) (_esip); \ 717 (void) (_size); \ 718 free((_p), M_SFXGE); \ 719 _NOTE(CONSTANTCONDITION) \ 720 } while (B_FALSE) 721 722/* LOCK */ 723 | 532#define SFXGE_BAR_LOCK_DESTROY(_esbp) \ 533 mtx_destroy(&(_esbp)->esb_lock) 534#define SFXGE_BAR_LOCK(_esbp) \ 535 mtx_lock(&(_esbp)->esb_lock) 536#define SFXGE_BAR_UNLOCK(_esbp) \ 537 mtx_unlock(&(_esbp)->esb_lock) 538 539#define EFSYS_BAR_READD(_esbp, _offset, _edp, _lock) \ --- 186 unchanged lines hidden (view full) --- 726 (void) (_esip); \ 727 (void) (_size); \ 728 free((_p), M_SFXGE); \ 729 _NOTE(CONSTANTCONDITION) \ 730 } while (B_FALSE) 731 732/* LOCK */ 733 |
724typedef struct mtx efsys_lock_t; | 734typedef struct efsys_lock_s { 735 struct mtx lock; 736 char lock_name[SFXGE_LOCK_NAME_MAX]; 737} efsys_lock_t; |
725 | 738 |
739#define SFXGE_EFSYS_LOCK_INIT(_eslp, _ifname, _label) \ 740 do { \ 741 efsys_lock_t *__eslp = (_eslp); \ 742 \ 743 snprintf((__eslp)->lock_name, \ 744 sizeof((__eslp)->lock_name), \ 745 "%s:%s", (_ifname), (_label)); \ 746 mtx_init(&(__eslp)->lock, (__eslp)->lock_name, \ 747 NULL, MTX_DEF); \ 748 } while (B_FALSE) 749#define SFXGE_EFSYS_LOCK_DESTROY(_eslp) \ 750 mtx_destroy(&(_eslp)->lock) 751#define SFXGE_EFSYS_LOCK(_eslp) \ 752 mtx_lock(&(_eslp)->lock) 753#define SFXGE_EFSYS_UNLOCK(_eslp) \ 754 mtx_unlock(&(_eslp)->lock) 755#define SFXGE_EFSYS_LOCK_ASSERT_OWNED(_eslp) \ 756 mtx_assert(&(_eslp)->lock, MA_OWNED) 757 |
|
726#define EFSYS_LOCK_MAGIC 0x000010c4 727 728#define EFSYS_LOCK(_lockp, _state) \ 729 do { \ | 758#define EFSYS_LOCK_MAGIC 0x000010c4 759 760#define EFSYS_LOCK(_lockp, _state) \ 761 do { \ |
730 mtx_lock(_lockp); \ | 762 SFXGE_EFSYS_LOCK(_lockp); \ |
731 (_state) = EFSYS_LOCK_MAGIC; \ 732 _NOTE(CONSTANTCONDITION) \ 733 } while (B_FALSE) 734 735#define EFSYS_UNLOCK(_lockp, _state) \ 736 do { \ 737 if ((_state) != EFSYS_LOCK_MAGIC) \ 738 KASSERT(B_FALSE, ("not locked")); \ | 763 (_state) = EFSYS_LOCK_MAGIC; \ 764 _NOTE(CONSTANTCONDITION) \ 765 } while (B_FALSE) 766 767#define EFSYS_UNLOCK(_lockp, _state) \ 768 do { \ 769 if ((_state) != EFSYS_LOCK_MAGIC) \ 770 KASSERT(B_FALSE, ("not locked")); \ |
739 mtx_unlock(_lockp); \ | 771 SFXGE_EFSYS_UNLOCK(_lockp); \ |
740 _NOTE(CONSTANTCONDITION) \ 741 } while (B_FALSE) 742 743/* PREEMPT */ 744 745#define EFSYS_PREEMPT_DISABLE(_state) \ 746 do { \ 747 (_state) = (_state); \ --- 93 unchanged lines hidden --- | 772 _NOTE(CONSTANTCONDITION) \ 773 } while (B_FALSE) 774 775/* PREEMPT */ 776 777#define EFSYS_PREEMPT_DISABLE(_state) \ 778 do { \ 779 (_state) = (_state); \ --- 93 unchanged lines hidden --- |