Example #1
0
static int mos_put_queue_msg(void *msgq, const void *msg)
{
    int result = MOS_FAIL;

    MOS_ASSERT(MOS_NULL != MOS_MSGQ);
    MOS_ASSERT(MOS_NULL != msg);
    
    if ((MOS_NULL != MOS_MSGQ) && (MOS_NULL != msg)) {
        if (MOS_NULL != MOS_MSGQ_ARRAY) {
            if (MOS_MSGQ_COUNT < MOS_MSGQ_LENGTH) {
                mos_memcpy(MOS_MSGQ_TAIL, msg, MOS_MSGQ_SIZE);
                MOS_MSGQ_TAIL += MOS_MSGQ_SIZE;
                if (MOS_MSGQ_TAIL >= MOS_MSGQ_ARRAY_TAIL) {
                    MOS_MSGQ_TAIL = MOS_MSGQ_ARRAY;
                }
                MOS_MSGQ_COUNT++;
                result = MOS_SUCCESS;
            } else {
                mos_send_notify(MOS_NOTIFY_MSGQ_FULL);
            }
        }
    }

    return result;
}
Example #2
0
File: map.c Project: kstephens/mos
mos_METHOD(map,clone)
{
  mos_map *m;
  mos_map_slot *v;

  m = mos_REFT(mos_clone(mos_MIMPL), mos_map);
  v = mos_malloc(sizeof(m->_m_slots[0]) * (m->_m_nslots + 1));
  mos_memcpy(v, V, sizeof(V[0]) * (L + 1));
  m->_m_slots = v;
  
  mos_return(mos_MAKE_REF(m));
}
Example #3
0
mos_METHOD_END

mos_METHOD(map,clone)
{
  void *v;
  
  mos_MIMPL = mos_clone(mos_MIMPL);
  v = mos_malloc(sizeof(V[0]) * (L + 1));
  mos_memcpy(v, V, sizeof(V[0]) * (L + 1));
  M = &(mos_REFT(mos_MIMPL,mos_mapobj)->_m);
  V = v;
  
  mos_return(mos_MIMPL);
}
Example #4
0
static int mos_get_queue_msg(void *msgq, void *msg)
{
    int result = MOS_FAIL;

    MOS_ASSERT(MOS_NULL != MOS_MSGQ);
    MOS_ASSERT(MOS_NULL != msg);
    
    if ((MOS_NULL != MOS_MSGQ) && (MOS_NULL != msg)) {
        if (MOS_NULL != MOS_MSGQ_ARRAY) {
            if (MOS_MSGQ_COUNT > 0) {
                mos_memcpy(msg, MOS_MSGQ_HEAD, MOS_MSGQ_SIZE);
                MOS_MSGQ_HEAD += MOS_MSGQ_SIZE;
                if (MOS_MSGQ_HEAD >= MOS_MSGQ_ARRAY_TAIL) {
                    MOS_MSGQ_HEAD = MOS_MSGQ_ARRAY;
                }
                MOS_MSGQ_COUNT--;
                result = MOS_SUCCESS;
            }
        }
    }

    return result;
}