Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Xin Wang
codes-dev
Commits
21293ecc
Commit
21293ecc
authored
Sep 23, 2015
by
Jonathan Jenkins
Browse files
clean up parameter usage in base modelnet/sched
parent
77cf5291
Changes
7
Hide whitespace changes
Inline
Side-by-side
codes/model-net-sched.h
View file @
21293ecc
...
...
@@ -88,17 +88,17 @@ typedef struct model_net_sched_interface {
// prio (currently the only user): int priority
// - NULL arguments should be treated as "use default value"
void
(
*
add
)(
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
const
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
// reverse the previous request addition
void
(
*
add_rc
)(
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
void
(
*
add_rc
)(
void
*
sched
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
// schedule the next packet for processing by the model
int
(
*
next
)(
tw_stime
*
poffset
,
...
...
@@ -109,10 +109,10 @@ typedef struct model_net_sched_interface {
tw_lp
*
lp
);
// reverse schedule the previous packet
void
(
*
next_rc
)(
void
*
sched
,
void
*
rc_event_save
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
void
*
sched
,
const
void
*
rc_event_save
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
}
model_net_sched_interface
;
/// overall scheduler struct - type puns the actual data structure
...
...
@@ -166,8 +166,8 @@ int model_net_sched_next(
void
model_net_sched_next_rc
(
model_net_sched
*
sched
,
void
*
rc_event_save
,
model_net_sched_rc
*
sched_rc
,
const
void
*
rc_event_save
,
const
model_net_sched_rc
*
sched_rc
,
tw_lp
*
lp
);
/// enter a new request into the scheduler, storing any info needed for rc in
...
...
@@ -175,7 +175,7 @@ void model_net_sched_next_rc(
/// sched_msg_params is scheduler-specific parameters (currently only used by
/// prio scheduler)
void
model_net_sched_add
(
model_net_request
*
req
,
const
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
...
...
@@ -187,7 +187,7 @@ void model_net_sched_add(
void
model_net_sched_add_rc
(
model_net_sched
*
sched
,
model_net_sched_rc
*
sched_rc
,
const
model_net_sched_rc
*
sched_rc
,
tw_lp
*
lp
);
// set default parameters for messages that don't specify any
...
...
codes/model-net.h
View file @
21293ecc
...
...
@@ -89,6 +89,7 @@ typedef struct model_net_request {
tw_lpid
dest_mn_lp
;
// destination modelnet lp
tw_lpid
src_lp
;
uint64_t
msg_size
;
uint64_t
pull_size
;
uint64_t
packet_size
;
int
net_id
;
int
is_pull
;
...
...
src/models/networks/model-net/model-net-lp.c
View file @
21293ecc
...
...
@@ -532,20 +532,23 @@ void model_net_method_send_msg_recv_event(
else
model_net_sched_set_default_params
(
&
m
->
msg
.
m_base
.
sched_params
);
m
->
msg
.
m_base
.
req
.
final_dest_lp
=
final_dest_lp
;
m
->
msg
.
m_base
.
req
.
src_lp
=
src_lp
;
model_net_request
*
r
=
&
m
->
msg
.
m_base
.
req
;
r
->
final_dest_lp
=
final_dest_lp
;
r
->
src_lp
=
src_lp
;
// for "recv" events, set the "dest" to this LP in the case of a pull event
m
->
msg
.
m_base
.
req
.
dest_mn_lp
=
sender
->
gid
;
m
->
msg
.
m_base
.
req
.
msg_size
=
is_pull
?
pull_size
:
msg_size
;
m
->
msg
.
m_base
.
req
.
packet_size
=
m
->
msg
.
m_base
.
req
.
msg_size
;
m
->
msg
.
m_base
.
req
.
net_id
=
net_id
;
m
->
msg
.
m_base
.
req
.
is_pull
=
is_pull
;
m
->
msg
.
m_base
.
req
.
remote_event_size
=
remote_event_size
;
m
->
msg
.
m_base
.
req
.
self_event_size
=
0
;
r
->
dest_mn_lp
=
sender
->
gid
;
r
->
pull_size
=
pull_size
;
r
->
msg_size
=
msg_size
;
// TODO: document why we're setting packet_size this way
r
->
packet_size
=
msg_size
;
r
->
net_id
=
net_id
;
r
->
is_pull
=
is_pull
;
r
->
remote_event_size
=
remote_event_size
;
r
->
self_event_size
=
0
;
m
->
msg
.
m_base
.
is_from_remote
=
1
;
strncpy
(
m
->
msg
.
m_base
.
req
.
category
,
category
,
CATEGORY_NAME_MAX
-
1
);
m
->
msg
.
m_base
.
req
.
category
[
CATEGORY_NAME_MAX
-
1
]
=
'\0'
;
strncpy
(
r
->
category
,
category
,
CATEGORY_NAME_MAX
-
1
);
r
->
category
[
CATEGORY_NAME_MAX
-
1
]
=
'\0'
;
if
(
remote_event_size
>
0
){
void
*
m_dat
=
model_net_method_get_edata
(
net_id
,
msg
);
...
...
src/models/networks/model-net/model-net-sched-impl.c
View file @
21293ecc
...
...
@@ -14,11 +14,10 @@
#define MN_SCHED_DEBUG_VERBOSE 0
#if MN_SCHED_DEBUG_VERBOSE
#define dprintf(_fmt, ...) printf(_fmt, ##__VA_ARGS__)
#else
#define dprintf(_fmt, ...)
#endif
#define dprintf(_fmt, ...) \
do { \
if (MN_SCHED_DEBUG_VERBOSE) printf(_fmt, ##__VA_ARGS__); \
} while(0)
/// scheduler-specific data structures
...
...
@@ -62,16 +61,16 @@ static void fcfs_init (
void
**
sched
);
static
void
fcfs_destroy
(
void
*
sched
);
static
void
fcfs_add
(
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
void
fcfs_add_rc
(
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
const
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
void
fcfs_add_rc
(
void
*
sched
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
int
fcfs_next
(
tw_stime
*
poffset
,
void
*
sched
,
...
...
@@ -79,10 +78,10 @@ static int fcfs_next(
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
void
fcfs_next_rc
(
void
*
sched
,
void
*
rc_event_save
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
void
*
sched
,
const
void
*
rc_event_save
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
// ROUND-ROBIN
static
void
rr_init
(
...
...
@@ -92,16 +91,16 @@ static void rr_init (
void
**
sched
);
static
void
rr_destroy
(
void
*
sched
);
static
void
rr_add
(
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
void
rr_add_rc
(
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
const
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
void
rr_add_rc
(
void
*
sched
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
int
rr_next
(
tw_stime
*
poffset
,
void
*
sched
,
...
...
@@ -109,10 +108,10 @@ static int rr_next(
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
void
rr_next_rc
(
void
*
sched
,
void
*
rc_event_save
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
void
*
sched
,
const
void
*
rc_event_save
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
void
prio_init
(
const
struct
model_net_method
*
method
,
const
model_net_sched_cfg_params
*
params
,
...
...
@@ -120,16 +119,16 @@ static void prio_init (
void
**
sched
);
static
void
prio_destroy
(
void
*
sched
);
static
void
prio_add
(
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
void
prio_add_rc
(
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
const
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
void
prio_add_rc
(
void
*
sched
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
int
prio_next
(
tw_stime
*
poffset
,
void
*
sched
,
...
...
@@ -137,10 +136,10 @@ static int prio_next(
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
static
void
prio_next_rc
(
void
*
sched
,
void
*
rc_event_save
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
void
*
sched
,
const
void
*
rc_event_save
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
);
/// function tables (names defined by X macro in model-net-sched.h)
static
const
model_net_sched_interface
fcfs_tab
=
...
...
@@ -176,20 +175,20 @@ void fcfs_destroy(void *sched){
}
void
fcfs_add
(
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
const
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
mn_sched_qitem
*
q
=
malloc
(
sizeof
(
mn_sched_qitem
));
q
->
entry_time
=
tw_now
(
lp
);
q
->
req
=
*
req
;
q
->
sched_params
=
*
sched_params
;
q
->
rem
=
req
->
is_pull
?
PULL_MSG_SIZE
:
req
->
msg_size
;
q
->
rem
=
req
->
msg_size
;
if
(
remote_event_size
>
0
){
q
->
remote_event
=
malloc
(
remote_event_size
);
memcpy
(
q
->
remote_event
,
remote_event
,
remote_event_size
);
...
...
@@ -208,7 +207,7 @@ void fcfs_add (
req
->
final_dest_lp
,
req
->
msg_size
,
tw_now
(
lp
));
}
void
fcfs_add_rc
(
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
void
fcfs_add_rc
(
void
*
sched
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
mn_sched_queue
*
s
=
sched
;
s
->
queue_len
--
;
struct
qlist_head
*
ent
=
qlist_pop_back
(
&
s
->
reqs
);
...
...
@@ -235,7 +234,7 @@ int fcfs_next(
return
-
1
;
}
mn_sched_qitem
*
q
=
qlist_entry
(
ent
,
mn_sched_qitem
,
ql
);
// issue the next packet
int
is_last_packet
;
uint64_t
psize
;
...
...
@@ -257,7 +256,7 @@ int fcfs_next(
// soruce in the case of a pull
*
poffset
=
s
->
method
->
model_net_method_recv_msg_event
(
q
->
req
.
category
,
q
->
req
.
final_dest_lp
,
q
->
req
.
dest_mn_lp
,
psize
,
q
->
req
.
is_pull
,
q
->
req
.
msg
_size
,
0
.
0
,
q
->
req
.
remote_event_size
,
q
->
req
.
is_pull
,
q
->
req
.
pull
_size
,
0
.
0
,
q
->
req
.
remote_event_size
,
q
->
remote_event
,
q
->
req
.
src_lp
,
lp
);
}
else
{
...
...
@@ -267,7 +266,7 @@ int fcfs_next(
tw_now
(
lp
),
is_last_packet
);
*
poffset
=
s
->
method
->
model_net_method_packet_event
(
q
->
req
.
category
,
q
->
req
.
final_dest_lp
,
q
->
req
.
dest_mn_lp
,
psize
,
q
->
req
.
is_pull
,
q
->
req
.
msg
_size
,
0
.
0
,
&
q
->
sched_params
,
q
->
req
.
pull
_size
,
0
.
0
,
&
q
->
sched_params
,
q
->
req
.
remote_event_size
,
q
->
remote_event
,
q
->
req
.
self_event_size
,
q
->
local_event
,
q
->
req
.
src_lp
,
lp
,
is_last_packet
);
...
...
@@ -278,7 +277,7 @@ int fcfs_next(
dprintf
(
"last %spkt: %lu (%lu) to %lu, size %lu at %1.5e (pull:%d)
\n
"
,
s
->
is_recv_queue
?
"recv "
:
"send "
,
lp
->
gid
,
q
->
req
.
src_lp
,
q
->
req
.
final_dest_lp
,
q
->
req
.
is_pull
?
PULL_MSG_SIZE
:
q
->
req
.
msg_size
,
tw_now
(
lp
),
q
->
req
.
is_pull
?
q
->
req
.
pull_size
:
q
->
req
.
msg_size
,
tw_now
(
lp
),
q
->
req
.
is_pull
);
qlist_pop
(
&
s
->
reqs
);
s
->
queue_len
--
;
...
...
@@ -305,10 +304,10 @@ int fcfs_next(
}
void
fcfs_next_rc
(
void
*
sched
,
void
*
rc_event_save
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
void
*
sched
,
const
void
*
rc_event_save
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
mn_sched_queue
*
s
=
sched
;
if
(
rc
->
rtn
==
-
1
){
// no op
...
...
@@ -334,8 +333,7 @@ void fcfs_next_rc(
assert
(
q
);
q
->
req
=
rc
->
req
;
q
->
sched_params
=
rc
->
sched_params
;
q
->
rem
=
(
q
->
req
.
is_pull
?
PULL_MSG_SIZE
:
q
->
req
.
msg_size
)
%
q
->
req
.
packet_size
;
q
->
rem
=
q
->
req
.
msg_size
%
q
->
req
.
packet_size
;
if
(
q
->
rem
==
0
){
// processed exactly a packet's worth of data
q
->
rem
=
q
->
req
.
packet_size
;
}
...
...
@@ -376,20 +374,20 @@ void rr_destroy (void *sched){
}
void
rr_add
(
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
const
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
fcfs_add
(
req
,
sched_params
,
remote_event_size
,
remote_event
,
local_event_size
,
local_event
,
sched
,
rc
,
lp
);
}
void
rr_add_rc
(
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
void
rr_add_rc
(
void
*
sched
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
fcfs_add_rc
(
sched
,
rc
,
lp
);
}
...
...
@@ -413,10 +411,10 @@ int rr_next(
}
void
rr_next_rc
(
void
*
sched
,
void
*
rc_event_save
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
void
*
sched
,
const
void
*
rc_event_save
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
// only time we need to do something apart from fcfs is on a successful
// rr_next that didn't remove the item from the queue
if
(
rc
->
rtn
==
0
){
...
...
@@ -452,15 +450,15 @@ void prio_destroy (void *sched){
}
void
prio_add
(
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
const
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
int
local_event_size
,
void
*
local_event
,
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
// sched_msg_params is simply an int
mn_sched_prio
*
ss
=
sched
;
int
prio
=
sched_params
->
prio
;
...
...
@@ -479,7 +477,7 @@ void prio_add (
rc
->
prio
=
prio
;
}
void
prio_add_rc
(
void
*
sched
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
void
prio_add_rc
(
void
*
sched
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
// just call the sub scheduler's add_rc
mn_sched_prio
*
ss
=
sched
;
dprintf
(
"%lu (mn): rc adding with prio %d
\n
"
,
lp
->
gid
,
rc
->
prio
);
...
...
@@ -508,10 +506,10 @@ int prio_next(
}
void
prio_next_rc
(
void
*
sched
,
void
*
rc_event_save
,
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
void
*
sched
,
const
void
*
rc_event_save
,
const
model_net_sched_rc
*
rc
,
tw_lp
*
lp
){
if
(
rc
->
prio
!=
-
1
){
// we called a next somewhere
mn_sched_prio
*
ss
=
sched
;
...
...
src/models/networks/model-net/model-net-sched.c
View file @
21293ecc
...
...
@@ -49,14 +49,14 @@ int model_net_sched_next(
void
model_net_sched_next_rc
(
model_net_sched
*
sched
,
void
*
rc_event_save
,
model_net_sched_rc
*
sched_rc
,
const
void
*
rc_event_save
,
const
model_net_sched_rc
*
sched_rc
,
tw_lp
*
lp
)
{
sched
->
impl
->
next_rc
(
sched
->
dat
,
rc_event_save
,
sched_rc
,
lp
);
}
void
model_net_sched_add
(
model_net_request
*
req
,
const
model_net_request
*
req
,
const
mn_sched_params
*
sched_params
,
int
remote_event_size
,
void
*
remote_event
,
...
...
@@ -71,7 +71,7 @@ void model_net_sched_add(
void
model_net_sched_add_rc
(
model_net_sched
*
sched
,
model_net_sched_rc
*
sched_rc
,
const
model_net_sched_rc
*
sched_rc
,
tw_lp
*
lp
){
sched
->
impl
->
add_rc
(
sched
->
dat
,
sched_rc
,
lp
);
}
...
...
src/models/networks/model-net/model-net.c
View file @
21293ecc
...
...
@@ -304,14 +304,21 @@ static model_net_event_return model_net_event_impl_base(
// set the request struct
model_net_request
*
r
=
&
m
->
msg
.
m_base
.
req
;
r
->
net_id
=
net_id
;
r
->
final_dest_lp
=
final_dest_lp
;
r
->
dest_mn_lp
=
dest_mn_lp
;
r
->
src_lp
=
sender
->
gid
;
r
->
msg_size
=
message_size
;
r
->
is_pull
=
is_pull
;
if
(
r
->
is_pull
)
{
r
->
msg_size
=
PULL_MSG_SIZE
;
r
->
pull_size
=
message_size
;
}
else
{
r
->
msg_size
=
message_size
;
r
->
pull_size
=
0
;
}
r
->
net_id
=
net_id
;
r
->
remote_event_size
=
remote_event_size
;
r
->
self_event_size
=
self_event_size
;
r
->
is_pull
=
is_pull
;
strncpy
(
r
->
category
,
category
,
CATEGORY_NAME_MAX
-
1
);
r
->
category
[
CATEGORY_NAME_MAX
-
1
]
=
'\0'
;
...
...
src/models/networks/model-net/simplenet-upd.c
View file @
21293ecc
...
...
@@ -107,6 +107,7 @@ static tw_stime simplenet_packet_event(
tw_lpid
src_lp
,
tw_lp
*
sender
,
int
is_last_pckt
);
static
void
simplenet_packet_event_rc
(
tw_lp
*
sender
);
static
void
simplenet_packet_event_rc
(
tw_lp
*
sender
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment