Whamcloud - gitweb
Quiet compiler warnings related to passing "const" pointers to non-const
[fs/lustre-release.git] / libcfs / libcfs / darwin / darwin-debug.c
1 /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
2  * vim:expandtab:shiftwidth=8:tabstop=8:
3  *
4  * GPL HEADER START
5  *
6  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 only,
10  * as published by the Free Software Foundation.
11  *
12  * This program is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * General Public License version 2 for more details (a copy is included
16  * in the LICENSE file that accompanied this code).
17  *
18  * You should have received a copy of the GNU General Public License
19  * version 2 along with this program; If not, see
20  * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
21  *
22  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
23  * CA 95054 USA or visit www.sun.com if you need additional information or
24  * have any questions.
25  *
26  * GPL HEADER END
27  */
28 /*
29  * Copyright  2008 Sun Microsystems, Inc. All rights reserved
30  * Use is subject to license terms.
31  */
32 /*
33  * This file is part of Lustre, http://www.lustre.org/
34  * Lustre is a trademark of Sun Microsystems, Inc.
35  */
36
37 # define DEBUG_SUBSYSTEM S_LNET
38
39 #include <libcfs/libcfs.h>
40 #include "tracefile.h"
41
42 void libcfs_debug_dumpstack(cfs_task_t *tsk)
43 {
44         return;
45 }
46
47 void libcfs_run_lbug_upcall(const char *file, const char *fn, const int line)
48 {
49 }
50
51 void lbug_with_loc(const char *file, const char *func, const int line)
52 {
53         libcfs_catastrophe = 1;
54         CEMERG("LBUG: pid: %u thread: %#x\n",
55                (unsigned)cfs_curproc_pid(), (unsigned)current_thread());
56         libcfs_debug_dumplog();
57         libcfs_run_lbug_upcall(file, func, line);
58         while (1)
59                 cfs_schedule();
60
61         /* panic("lbug_with_loc(%s, %s, %d)", file, func, line) */
62 }
63
64 #if ENTRY_NESTING_SUPPORT
65
66 static inline struct cfs_debug_data *__current_cdd(void)
67 {
68         struct cfs_debug_data *cdd;
69
70         cdd = (struct cfs_debug_data *)current_uthread()->uu_nlminfo;
71         if (cdd != NULL &&
72             cdd->magic1 == CDD_MAGIC1 && cdd->magic2 == CDD_MAGIC2 &&
73             cdd->nesting_level < 1000)
74                 return cdd;
75         else
76                 return NULL;
77 }
78
79 static inline void __current_cdd_set(struct cfs_debug_data *cdd)
80 {
81         current_uthread()->uu_nlminfo = (void *)cdd;
82 }
83
84 void __entry_nesting(struct cfs_debug_data *child)
85 {
86         struct cfs_debug_data *parent;
87
88         parent = __current_cdd();
89         if (parent != NULL) {
90                 child->parent        = parent;
91                 child->nesting_level = parent->nesting_level + 1;
92         }
93         __current_cdd_set(child);
94 }
95
96 void __exit_nesting(struct cfs_debug_data *child)
97 {
98         __current_cdd_set(child->parent);
99 }
100
101 unsigned int __current_nesting_level(void)
102 {
103         struct cfs_debug_data *cdd;
104
105         cdd = __current_cdd();
106         if (cdd != NULL)
107                 return cdd->nesting_level;
108         else
109                 return 0;
110 }
111 /* ENTRY_NESTING_SUPPORT */
112 #endif