00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _ASTERISK_H
00019 #define _ASTERISK_H
00020
00021 #include "asterisk/autoconfig.h"
00022
00023 #if !defined(NO_MALLOC_DEBUG) && !defined(STANDALONE) && !defined(STANDALONE2) && defined(MALLOC_DEBUG)
00024 #include "asterisk/astmm.h"
00025 #endif
00026
00027 #include "asterisk/compat.h"
00028
00029
00030
00031
00032 #ifndef AST_DIR_MODE
00033 #define AST_DIR_MODE 0777
00034 #endif
00035 #ifndef AST_FILE_MODE
00036 #define AST_FILE_MODE 0666
00037 #endif
00038
00039 #define DEFAULT_LANGUAGE "en"
00040
00041 #define DEFAULT_SAMPLE_RATE 8000
00042 #define DEFAULT_SAMPLES_PER_MS ((DEFAULT_SAMPLE_RATE)/1000)
00043 #define setpriority __PLEASE_USE_ast_set_priority_INSTEAD_OF_setpriority__
00044 #define sched_setscheduler __PLEASE_USE_ast_set_priority_INSTEAD_OF_sched_setscheduler__
00045
00046 #if defined(DEBUG_FD_LEAKS) && !defined(STANDALONE) && !defined(STANDALONE2) && !defined(STANDALONE_AEL)
00047
00048 #include <stdio.h>
00049 #include <sys/types.h>
00050 #include <sys/stat.h>
00051 #include <sys/socket.h>
00052 #include <fcntl.h>
00053
00054 #define open(a,...) __ast_fdleak_open(__FILE__,__LINE__,__PRETTY_FUNCTION__, a, __VA_ARGS__)
00055 #define pipe(a) __ast_fdleak_pipe(a, __FILE__,__LINE__,__PRETTY_FUNCTION__)
00056 #define socket(a,b,c) __ast_fdleak_socket(a, b, c, __FILE__,__LINE__,__PRETTY_FUNCTION__)
00057 #define close(a) __ast_fdleak_close(a)
00058 #define fopen(a,b) __ast_fdleak_fopen(a, b, __FILE__,__LINE__,__PRETTY_FUNCTION__)
00059 #define fclose(a) __ast_fdleak_fclose(a)
00060 #define dup2(a,b) __ast_fdleak_dup2(a, b, __FILE__,__LINE__,__PRETTY_FUNCTION__)
00061 #define dup(a) __ast_fdleak_dup(a, __FILE__,__LINE__,__PRETTY_FUNCTION__)
00062
00063 #if defined(__cplusplus) || defined(c_plusplus)
00064 extern "C" {
00065 #endif
00066 int __ast_fdleak_open(const char *file, int line, const char *func, const char *path, int flags, ...);
00067 int __ast_fdleak_pipe(int *fds, const char *file, int line, const char *func);
00068 int __ast_fdleak_socket(int domain, int type, int protocol, const char *file, int line, const char *func);
00069 int __ast_fdleak_close(int fd);
00070 FILE *__ast_fdleak_fopen(const char *path, const char *mode, const char *file, int line, const char *func);
00071 int __ast_fdleak_fclose(FILE *ptr);
00072 int __ast_fdleak_dup2(int oldfd, int newfd, const char *file, int line, const char *func);
00073 int __ast_fdleak_dup(int oldfd, const char *file, int line, const char *func);
00074 #if defined(__cplusplus) || defined(c_plusplus)
00075 }
00076 #endif
00077 #endif
00078
00079 int ast_set_priority(int);
00080 int ast_fd_init(void);
00081 int ast_pbx_init(void);
00082
00083
00084
00085
00086
00087
00088
00089
00090 int ast_register_atexit(void (*func)(void));
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106 int ast_register_cleanup(void (*func)(void));
00107
00108
00109
00110
00111
00112 void ast_unregister_atexit(void (*func)(void));
00113
00114 #if !defined(LOW_MEMORY)
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124 void ast_register_file_version(const char *file, const char *version);
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 void ast_unregister_file_version(const char *file);
00136
00137
00138
00139
00140
00141 const char *ast_file_version_find(const char *file);
00142
00143 char *ast_complete_source_filename(const char *partial, int n);
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166 #ifdef MTX_PROFILE
00167 #define HAVE_MTX_PROFILE
00168 #define ASTERISK_FILE_VERSION(file, version) \
00169 static int mtx_prof = -1; \
00170 static void __attribute__((constructor)) __register_file_version(void) \
00171 { \
00172 mtx_prof = ast_add_profile("mtx_lock_" file, 0); \
00173 ast_register_file_version(file, version); \
00174 } \
00175 static void __attribute__((destructor)) __unregister_file_version(void) \
00176 { \
00177 ast_unregister_file_version(file); \
00178 }
00179 #else
00180 #define ASTERISK_FILE_VERSION(file, version) \
00181 static void __attribute__((constructor)) __register_file_version(void) \
00182 { \
00183 ast_register_file_version(file, version); \
00184 } \
00185 static void __attribute__((destructor)) __unregister_file_version(void) \
00186 { \
00187 ast_unregister_file_version(file); \
00188 }
00189 #endif
00190 #else
00191 #define ASTERISK_FILE_VERSION(file, x)
00192 #endif
00193
00194 #if !defined(LOW_MEMORY)
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210 int ast_add_profile(const char *, uint64_t scale);
00211 int64_t ast_profile(int, int64_t);
00212 int64_t ast_mark(int, int start1_stop0);
00213 #else
00214 #define ast_add_profile(a, b) 0
00215 #define ast_profile(a, b) do { } while (0)
00216 #define ast_mark(a, b) do { } while (0)
00217 #endif
00218
00219
00220
00221
00222
00223
00224
00225 struct ast_channel;
00226 struct ast_frame;
00227 struct ast_module;
00228 struct ast_variable;
00229 struct ast_str;
00230
00231 #ifdef bzero
00232 #undef bzero
00233 #endif
00234
00235 #ifdef bcopy
00236 #undef bcopy
00237 #endif
00238
00239 #define bzero 0x__dont_use_bzero__use_memset_instead""
00240 #define bcopy 0x__dont_use_bcopy__use_memmove_instead()
00241
00242 #endif