diff -r 000000000000 -r e4d67989cc36 glib/libglib/inc/glib_wsd.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/glib/libglib/inc/glib_wsd.h Tue Feb 02 02:01:42 2010 +0200 @@ -0,0 +1,342 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + + +#ifndef __GLIB_WSD_H__ +#define __GLIB_WSD_H__ + +#if (defined(__SYMBIAN32__) && (defined(__WINSCW__) || defined(__WINS__))) + +#include <_ansi.h> +#include +#include + +/* --------------------- MACRO DEFINATIONS ------------------------*/ +#ifndef EMULATOR +#define EMULATOR (defined(__SYMBIAN32__) && (defined(__WINSCW__) || defined(__WINS__))) +#endif /* EMULATOR */ + +#define VARIABLE_NAME_MACRO(name,filename) s_##filename##_g__ ## name ## _lock + +#define FUNCTION_NAME_MACRO(name,filename) _s_##filename##_g__ ## name ## _lock + +#define VARIABLE_NAME(var,filename) s_##filename##_##var + +#define FUNCTION_NAME(var,filename) _s_##filename##_##var + +#define VARIABLE_DECL_MACRO(name,filename,datatype) \ +datatype VARIABLE_NAME_MACRO(name,filename); + +#define VARIABLE_DECL(var,filename,datatype)\ +datatype VARIABLE_NAME(var,filename); + +#define VARIABLE_DECL_ARRAY(name,filename,datatype,size) \ +datatype VARIABLE_NAME(name,filename)[size]; + +#define RETURN_VAL(var,filename) (Glib_ImpurePtr()->VARIABLE_NAME(var,filename)) + +#define RETURN_VAL_MACRO(var,filename) (Glib_ImpurePtr()->VARIABLE_NAME_MACRO(var,filename)) + +#define PLS(var,filename,type) \ +type *FUNCTION_NAME(var,filename)() \ +{ \ +return &RETURN_VAL(var,filename);\ +} + +#define PLS_MACRO(var,filename,type) \ +type *FUNCTION_NAME_MACRO(var,filename)() \ +{ \ +return &RETURN_VAL_MACRO(var,filename);\ +} + +#define PLS_ARRAY(var,filename,type) \ +type *FUNCTION_NAME(var,filename)() \ +{ \ +return RETURN_VAL(var,filename);\ +} +/* --------------------- END MACRO DEFINATIONS ------------------------*/ + +typedef struct _GDataset GDataset; +struct _GDataset +{ + gconstpointer location; + GData *datalist; +}; + +struct _GAllocator { + gchar *name; + guint16 n_preallocs; + guint is_unused : 1; + guint type : 4; + GAllocator *last; + GMemChunk *mem_chunk; + gpointer free_list; + }; + +typedef struct _GLogDomain GLogDomain; +typedef struct _GLogHandler GLogHandler; + +struct _GLogDomain +{ + gchar *log_domain; + GLogLevelFlags fatal_mask; + GLogHandler *handlers; + GLogDomain *next; +}; + +struct _GLogHandler +{ + guint id; + GLogLevelFlags log_level; + GLogFunc log_func; + gpointer data; + GLogHandler *next; +}; + +typedef struct _GRealThread GRealThread; +struct _GRealThread +{ + GThread thread; + gpointer private_data; + GRealThread *next; + gpointer retval; + GSystemThread system_thread; +}; + +typedef struct _ChunkLink ChunkLink; +typedef struct _SlabInfo SlabInfo; + +struct _ChunkLink { + ChunkLink *next; + ChunkLink *data; +}; +struct _SlabInfo { + ChunkLink *chunks; + guint n_allocated; + SlabInfo *next, *prev; +}; + +typedef struct { + gboolean always_malloc; + gboolean bypass_magazines; + gsize working_set_msecs; + guint color_increment; +} SliceConfig; +typedef struct { + /* const after initialization */ + gsize min_page_size, max_page_size; + SliceConfig config; + gsize max_slab_chunk_size_for_magazine_cache; + /* magazine cache */ + GMutex *magazine_mutex; + ChunkLink **magazines; /* array of MAX_SLAB_INDEX (allocator) */ + guint *contention_counters; /* array of MAX_SLAB_INDEX (allocator) */ + gint mutex_counter; + guint stamp_counter; + guint last_stamp; + /* slab allocator */ + GMutex *slab_mutex; + SlabInfo **slab_stack; /* array of MAX_SLAB_INDEX (allocator) */ + guint color_accu; +} Allocator; + + + +struct global_struct +{ + + //Global dsta of gatomic.c + VARIABLE_DECL(g_atomic_mutex , gatomic,GMutex *) + + //Global variable of gbacktrace.c + VARIABLE_DECL(glib_on_error_halt,gbacktrace,volatile gboolean) + + //Global data of gconvert.c + VARIABLE_DECL(quark,g_convert_error_quark,GQuark) + VARIABLE_DECL(cache_private,g_get_filename_charsets,GStaticPrivate) + + //Global data of gdataset.c + VARIABLE_DECL_MACRO(g_dataset_global,gdataset,GStaticMutex) + VARIABLE_DECL(g_dataset_location_ht,gdataset,GHashTable *) + VARIABLE_DECL(g_dataset_cached,gdataset,GDataset *) + VARIABLE_DECL_MACRO(g_quark_global,gdataset,GStaticMutex) + VARIABLE_DECL(g_quark_ht,gdataset,GHashTable *) + VARIABLE_DECL(g_quarks,gdataset,gchar **) + VARIABLE_DECL(g_quark_seq_id,gdataset,GQuark) + + //Global data of gdate.c + VARIABLE_DECL_MACRO(g_date_global,gdate,GStaticMutex) + VARIABLE_DECL_ARRAY(long_month_names, gdate, gchar *,13) + VARIABLE_DECL_ARRAY(short_month_names, gdate, gchar *,13) + VARIABLE_DECL(current_locale,gdate, gchar *) + VARIABLE_DECL_ARRAY(dmy_order, gdate, GDateDMY,3) + VARIABLE_DECL(using_twodigit_years,gdate, gboolean) + VARIABLE_DECL(locale_era_adjust,gdate, gint) + + //Global data of gfileutils.c + VARIABLE_DECL(q,g_file_error_quark ,GQuark) + VARIABLE_DECL(counter ,create_temp_file,int) + + //Global data of giochannel.c + VARIABLE_DECL(q,g_io_channel_error_quark ,GQuark) + + //Global data of giounix.c + VARIABLE_DECL(unix_channel_funcs,giounix,GIOFuncs ) + VARIABLE_DECL(g_io_watch_funcs,giounix,GSourceFuncs) + + //Global data of gkeyfile.c + VARIABLE_DECL(error_quark ,g_key_file_error_quark,GQuark) + + //Global data of gmain.c + VARIABLE_DECL_MACRO(main_loop,gmain,GStaticMutex) + VARIABLE_DECL(default_main_context,gmain,GMainContext *) + VARIABLE_DECL(main_contexts_without_pipe,gmain,GSList *) + VARIABLE_DECL_MACRO(main_context_list,gmain,GStaticMutex) + VARIABLE_DECL(main_context_list,gmain,GSList *) + VARIABLE_DECL(depth_private,get_depth_pointer ,GStaticPrivate) + VARIABLE_DECL(g_source_callback_funcs,gmain,GSourceCallbackFuncs) + VARIABLE_DECL(g_timeout_funcs,gmain,GSourceFuncs) + VARIABLE_DECL(g_child_watch_funcs ,gmain,GSourceFuncs) + VARIABLE_DECL(g_idle_funcs,gmain,GSourceFuncs) + + //Global data of gmarkup.c + VARIABLE_DECL(error_quark ,g_markup_error_quark,GQuark) + + //Global data of gmem.c + VARIABLE_DECL(glib_mem_vtable,gmem,GMemVTable) + VARIABLE_DECL(vtable_set ,gmem,gboolean) + VARIABLE_DECL(profile_data ,gmem,guint *) + VARIABLE_DECL(profile_allocs ,gmem,gulong) + VARIABLE_DECL(profile_zinit ,gmem,gulong) + VARIABLE_DECL(profile_frees ,gmem,gulong) + VARIABLE_DECL(gmem_profile_mutex ,gmem,GMutex *) + VARIABLE_DECL(profiler_table,gmem,GMemVTable) + VARIABLE_DECL(glib_mem_profiler_table,gmem,GMemVTable *) + VARIABLE_DECL(g_mem_initialized ,gmem,gboolean) + VARIABLE_DECL(g_mem_gc_friendly ,gmem,gboolean) + VARIABLE_DECL(dummy ,g_allocator_new,struct _GAllocator) + + //Global data of gmessages.c + VARIABLE_DECL(g_messages_lock,gmessages,GMutex *) + VARIABLE_DECL(g_log_domains,gmessages,GLogDomain *) + VARIABLE_DECL(g_log_always_fatal,gmessages,GLogLevelFlags) + VARIABLE_DECL(glib_print_func,gmessages,GPrintFunc) + VARIABLE_DECL(glib_printerr_func,gmessages,GPrintFunc) + VARIABLE_DECL(g_log_depth,gmessages,GPrivate *) + VARIABLE_DECL(g_log_msg_prefix,gmessages,GLogLevelFlags) + VARIABLE_DECL(default_log_func,gmessages,GLogFunc) + VARIABLE_DECL(default_log_data,gmessages,gpointer) + VARIABLE_DECL(initialized ,g_messages_prefixed_init,gboolean) + VARIABLE_DECL(handler_id,g_log_set_handler,guint) + VARIABLE_DECL(warned,strdup_convert,gboolean) + VARIABLE_DECL(_g_debug_initialized ,gmessages,gboolean) + VARIABLE_DECL(_g_debug_flags,gmessages,guint) + + //Global data of goption.c + VARIABLE_DECL(q,g_option_error_quark,GQuark) + + //Global data of grand.c + VARIABLE_DECL_MACRO(global_random,grand,GStaticMutex) + VARIABLE_DECL(global_random,grand,GRand *) + VARIABLE_DECL(initialized ,get_random_version,gboolean) + VARIABLE_DECL(random_version ,get_random_version,guint) + VARIABLE_DECL(dev_urandom_exists,g_rand_new ,gboolean) + + //Global data of gscanner.c + VARIABLE_DECL(g_scanner_config_template ,gscanner,GScannerConfig) + + //Global data of gshell.c + VARIABLE_DECL(quark,g_shell_error_quark ,GQuark) + + //Global data of gspawn-symbian.c + VARIABLE_DECL(debug,gspawn_symbian,int) + VARIABLE_DECL(quark,g_spawn_error_quark ,GQuark) + VARIABLE_DECL(warned_about_child_setup ,do_spawn_with_pipes,gboolean) + + //Global data of gthread.c + VARIABLE_DECL(quark,g_thread_error_quark ,GQuark) + VARIABLE_DECL(zero_thread,gthread,GSystemThread) + VARIABLE_DECL(g_once_mutex,gthread,GMutex *) + VARIABLE_DECL(g_once_cond,gthread,GCond *) + VARIABLE_DECL(g_thread_specific_private ,gthread,GPrivate *) + VARIABLE_DECL(g_thread_all_threads,gthread,GRealThread *) + VARIABLE_DECL(g_thread_free_indeces,gthread,GSList *) + VARIABLE_DECL_MACRO(g_thread,gthread,GStaticMutex) + VARIABLE_DECL(next_index ,g_static_private_set,guint) + VARIABLE_DECL(g_thread_use_default_impl,gthread,gboolean) + VARIABLE_DECL(g_threads_got_initialized,gthread,gboolean) + VARIABLE_DECL(g_thread_functions_for_glib_use,gthread,GThreadFunctions) + + //Global data of Gthreadpool.c + VARIABLE_DECL(wakeup_thread_serial,gthreadpool,gint) + VARIABLE_DECL(unused_thread_queue,gthreadpool,GAsyncQueue *) + VARIABLE_DECL(unused_threads,gthreadpool,gint) + VARIABLE_DECL(max_unused_threads,gthreadpool,gint) + VARIABLE_DECL(kill_unused_threads,gthreadpool,gint) + VARIABLE_DECL(max_idle_time,gthreadpool,guint) + VARIABLE_DECL_MACRO(init,g_thread_pool_new,GStaticMutex) + + //Global data of gutf8.c + VARIABLE_DECL_MACRO(aliases,gutf8,GStaticMutex) + VARIABLE_DECL(alias_hash,get_alias_hash,GHashTable *) + VARIABLE_DECL(cache_private,g_get_charset,GStaticPrivate) + + //Global data of gutils.c + VARIABLE_DECL_MACRO(g_utils_global,gutils,GStaticMutex) + VARIABLE_DECL(g_tmp_dir,gutils,gchar *) + VARIABLE_DECL(g_user_name,gutils,gchar *) + VARIABLE_DECL(g_real_name,gutils,gchar *) + VARIABLE_DECL(g_home_dir,gutils,gchar *) + VARIABLE_DECL(g_host_name,gutils,gchar *) + VARIABLE_DECL(g_user_data_dir ,gutils,gchar *) + VARIABLE_DECL(g_system_data_dirs,gutils,gchar **) + VARIABLE_DECL(g_user_cache_dir,gutils,gchar *) + VARIABLE_DECL(g_user_config_dir,gutils,gchar *) + VARIABLE_DECL(g_system_config_dirs,gutils,gchar **) + VARIABLE_DECL_MACRO(g_prgname,gutils,GStaticMutex) + VARIABLE_DECL(g_prgname,gutils,gchar *) + VARIABLE_DECL_MACRO(g_application_name ,gutils,GStaticMutex) + VARIABLE_DECL(g_application_name ,gutils,gchar *) + VARIABLE_DECL(alias_table ,gutils,GHashTable *) + VARIABLE_DECL(said_before ,unalias_lang,gboolean) + VARIABLE_DECL(cache_private ,g_get_language_names ,GStaticPrivate) + VARIABLE_DECL(max_len,g_get_current_dir ,gulong) + VARIABLE_DECL(_glib_gettext_initialized,_glib_gettext,gboolean) + + //Global data of localcharset.c + VARIABLE_DECL(charset_aliases,localcharset,const char * volatile) + + //Global data of gstrfuncs.c + VARIABLE_DECL(msg_private ,g_strerror,GStaticPrivate) + VARIABLE_DECL(msg_private ,g_strsignal,GStaticPrivate) + + //Global data of gslice.c + VARIABLE_DECL(private_thread_memory,gslice,GPrivate *) + VARIABLE_DECL(sys_page_size,gslice,gsize) + VARIABLE_DECL_ARRAY(allocator,gslice,Allocator,1) + VARIABLE_DECL(slice_config,gslice,SliceConfig) + VARIABLE_DECL(compat_valloc_trash,gslice,GTrashStack *) + +}; + +__BEGIN_DECLS +struct global_struct *Glib_ImpurePtr(); +__END_DECLS +#endif /* EMULATOR */ + +#endif /* __GLIB_WSD_H__ */ \ No newline at end of file