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 extern char setmaskvar[PATH_MAX];
00080 extern int setmaskvarini, setmaskvarend;
00081 extern char readmaskvar[PATH_MAX];
00082 extern int readmaskvarini, readmaskvarend;
00083 extern char agimaskvar[PATH_MAX];
00084 extern int agimaskvarini, agimaskvarend;
00085
00086 int ast_set_priority(int);
00087 int ast_fd_init(void);
00088 int ast_pbx_init(void);
00089 void mask_string(char *, int, int, int);
00090
00091
00092
00093
00094
00095
00096
00097
00098 int ast_register_atexit(void (*func)(void));
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114 int ast_register_cleanup(void (*func)(void));
00115
00116
00117
00118
00119
00120 void ast_unregister_atexit(void (*func)(void));
00121
00122 #if !defined(LOW_MEMORY)
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132 void ast_register_file_version(const char *file, const char *version);
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143 void ast_unregister_file_version(const char *file);
00144
00145
00146
00147
00148
00149 const char *ast_file_version_find(const char *file);
00150
00151 char *ast_complete_source_filename(const char *partial, int n);
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174 #ifdef MTX_PROFILE
00175 #define HAVE_MTX_PROFILE
00176 #define ASTERISK_FILE_VERSION(file, version) \
00177 static int mtx_prof = -1; \
00178 static void __attribute__((constructor)) __register_file_version(void) \
00179 { \
00180 mtx_prof = ast_add_profile("mtx_lock_" file, 0); \
00181 ast_register_file_version(file, version); \
00182 } \
00183 static void __attribute__((destructor)) __unregister_file_version(void) \
00184 { \
00185 ast_unregister_file_version(file); \
00186 }
00187 #else
00188 #define ASTERISK_FILE_VERSION(file, version) \
00189 static void __attribute__((constructor)) __register_file_version(void) \
00190 { \
00191 ast_register_file_version(file, version); \
00192 } \
00193 static void __attribute__((destructor)) __unregister_file_version(void) \
00194 { \
00195 ast_unregister_file_version(file); \
00196 }
00197 #endif
00198 #else
00199 #define ASTERISK_FILE_VERSION(file, x)
00200 #endif
00201
00202 #if !defined(LOW_MEMORY)
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218 int ast_add_profile(const char *, uint64_t scale);
00219 int64_t ast_profile(int, int64_t);
00220 int64_t ast_mark(int, int start1_stop0);
00221 #else
00222 #define ast_add_profile(a, b) 0
00223 #define ast_profile(a, b) do { } while (0)
00224 #define ast_mark(a, b) do { } while (0)
00225 #endif
00226
00227
00228
00229
00230
00231
00232
00233 struct ast_channel;
00234 struct ast_frame;
00235 struct ast_module;
00236 struct ast_variable;
00237 struct ast_str;
00238
00239 #ifdef bzero
00240 #undef bzero
00241 #endif
00242
00243 #ifdef bcopy
00244 #undef bcopy
00245 #endif
00246
00247 #define bzero 0x__dont_use_bzero__use_memset_instead""
00248 #define bcopy 0x__dont_use_bcopy__use_memmove_instead()
00249
00250 #endif