[asterisk-commits] nadi: branch group/trunk-cm-csel-hash r47966 -
/team/group/trunk-cm-csel-hash...
asterisk-commits at lists.digium.com
asterisk-commits at lists.digium.com
Thu Nov 23 07:47:48 MST 2006
Author: nadi
Date: Thu Nov 23 08:47:47 2006
New Revision: 47966
URL: http://svn.digium.com/view/asterisk?view=rev&rev=47966
Log:
statemachine_get_state w/o locking
Modified:
team/group/trunk-cm-csel-hash/res/res_statemachine.c
Modified: team/group/trunk-cm-csel-hash/res/res_statemachine.c
URL: http://svn.digium.com/view/asterisk/team/group/trunk-cm-csel-hash/res/res_statemachine.c?view=diff&rev=47966&r1=47965&r2=47966
==============================================================================
--- team/group/trunk-cm-csel-hash/res/res_statemachine.c (original)
+++ team/group/trunk-cm-csel-hash/res/res_statemachine.c Thu Nov 23 08:47:47 2006
@@ -44,7 +44,7 @@
struct statemachine {
ast_mutex_t lock;
void *p;
- int state;
+ volatile int state;
struct statemachine_transition *table;
int num_rows;
int (*send_event)(void *p, int event);
@@ -94,7 +94,6 @@
event_out = EVENT_DEFAULT,
err,
retval = -1,
- state,
leave = 0;
LOCK(sm);
@@ -102,10 +101,9 @@
if (sm->log_event)
sm->log_event(sm->p, LOG_RECEIVE, sm->state, event);
- state = sm->state;
for (; i < sm->num_rows; ++i) {
t = &sm->table[i];
- if ((t->state == state || t->state == STATE_ANY) &&
+ if ((t->state == sm->state || t->state == STATE_ANY) &&
(t->event == event || t->event == EVENT_ANY)) {
if (t->handle) {
handle_retval = t->handle(sm->p, sm->state, event);
@@ -153,14 +151,9 @@
int statemachine_get_state (struct statemachine *sm)
{
- int state;
+ return sm->state;
+}
- LOCK(sm);
- state = sm->state;
- UNLOCK(sm);
-
- return state;
-}
void statemachine_set_state (struct statemachine *sm, int state)
{
LOCK(sm);
More information about the asterisk-commits
mailing list