A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
-Add smx_ctx_sysv_get_thread_id to the parallel ucontext factory.
[simgrid.git]
/
include
/
simix
/
context.h
diff --git
a/include/simix/context.h
b/include/simix/context.h
index
0ccf120
..
9d8ea2e
100644
(file)
--- a/
include/simix/context.h
+++ b/
include/simix/context.h
@@
-6,11
+6,12
@@
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
-#ifndef _
XBT
_CONTEXT_H
-#define _
XBT
_CONTEXT_H
+#ifndef _
SIMIX
_CONTEXT_H
+#define _
SIMIX
_CONTEXT_H
#include "xbt/swag.h"
#include "simix/datatypes.h"
#include "xbt/swag.h"
#include "simix/datatypes.h"
+#include "gras_config.h"
SG_BEGIN_DECL()
/******************************** Context *************************************/
SG_BEGIN_DECL()
/******************************** Context *************************************/
@@
-35,6
+36,7
@@
typedef void (*smx_pfn_context_suspend_t) (smx_context_t context);
typedef void (*smx_pfn_context_runall_t) (xbt_dynar_t processes);
typedef smx_context_t (*smx_pfn_context_self_t) (void);
typedef void* (*smx_pfn_context_get_data_t) (smx_context_t context);
typedef void (*smx_pfn_context_runall_t) (xbt_dynar_t processes);
typedef smx_context_t (*smx_pfn_context_self_t) (void);
typedef void* (*smx_pfn_context_get_data_t) (smx_context_t context);
+typedef int (*smx_pfn_context_get_thread_id) (void);
/* interface of the context factories */
typedef struct s_smx_context_factory {
/* interface of the context factories */
typedef struct s_smx_context_factory {
@@
-47,6
+49,7
@@
typedef struct s_smx_context_factory {
smx_pfn_context_runall_t runall;
smx_pfn_context_self_t self;
smx_pfn_context_get_data_t get_data;
smx_pfn_context_runall_t runall;
smx_pfn_context_self_t self;
smx_pfn_context_get_data_t get_data;
+ smx_pfn_context_get_thread_id get_thread_id;
} s_smx_context_factory_t;
} s_smx_context_factory_t;
@@
-55,8
+58,13
@@
typedef struct s_smx_context_factory {
typedef void (*smx_ctx_factory_initializer_t)(smx_context_factory_t*);
extern smx_ctx_factory_initializer_t smx_factory_initializer_to_use;
extern char* smx_context_factory_name;
typedef void (*smx_ctx_factory_initializer_t)(smx_context_factory_t*);
extern smx_ctx_factory_initializer_t smx_factory_initializer_to_use;
extern char* smx_context_factory_name;
-extern int smx_parallel_contexts;
+extern int smx_context_stack_size;
+
+#ifdef CONTEXT_THREADS
+extern __thread smx_context_t smx_current_context;
+#else
extern smx_context_t smx_current_context;
extern smx_context_t smx_current_context;
+#endif
/* *********************** */
/* Context type definition */
/* *********************** */
/* Context type definition */
@@
-89,6
+97,12
@@
void smx_ctx_base_free(smx_context_t context);
void smx_ctx_base_stop(smx_context_t context);
smx_context_t smx_ctx_base_self(void);
void *smx_ctx_base_get_data(smx_context_t context);
void smx_ctx_base_stop(smx_context_t context);
smx_context_t smx_ctx_base_self(void);
void *smx_ctx_base_get_data(smx_context_t context);
+int smx_ctx_base_get_thread_id(void);
+
+/* parallelism */
+void SIMIX_context_set_nthreads(int nb_threads);
+int SIMIX_context_get_nthreads(void);
+int SIMIX_context_is_parallel(void);
SG_END_DECL()
SG_END_DECL()