From c57db016798f388e886769abd13fa866d1cf1a50 Mon Sep 17 00:00:00 2001 From: hadaq Date: Thu, 6 Jun 2002 12:54:24 +0000 Subject: [PATCH] Optimizations by WK --- hadaq/subevt.c | 157 ++++++++++++++++--------------------------------- hadaq/subevt.h | 71 ++++++++++++++++++---- 2 files changed, 110 insertions(+), 118 deletions(-) diff --git a/hadaq/subevt.c b/hadaq/subevt.c index 372db44..93dce84 100644 --- a/hadaq/subevt.c +++ b/hadaq/subevt.c @@ -1,4 +1,5 @@ -static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/subevt.c,v 6.6 2001-11-18 11:56:21 hadaq Exp $"; +static char *rcsId = "$Header: /u/hadaq/CVS/hadaq/subevt.c,v 6.6 2001/11/18 11:5 +6:21 hadaq Exp $"; #include @@ -9,134 +10,76 @@ static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hada #include "subevt.h" -enum SubEvtIdx { - SubEvtIdx_size, - SubEvtIdx_decoding, - SubEvtIdx_id, - SubEvtIdx_trigNr, - SubEvtIdx_data -}; - -size_t SubEvt_hdrLen(void) -{ - return SubEvtIdx_data; -} - -size_t SubEvt_hdrSize(void) -{ - return SubEvt_hdrLen() * sizeof(uint32_t); -} - -size_t SubEvt_dataSize(const void *my) -{ - return SubEvt_size(my) - SubEvt_hdrSize(); -} - -void *SubEvt_data(const void *my) -{ - return (void *) ((char *) my + SubEvt_hdrSize()); -} - uint32_t SubEvt_dataValue(const void *my, unsigned idx) { - uint32_t val; - - switch (SubEvt_alignment(my)) { - case 4: - if (SubEvt_isSwapped(my)) { - uint32_t tmp0; - uint32_t tmp1; - - tmp0 = ((uint32_t *)SubEvt_data(my))[idx]; - ((char *) &tmp1)[0] = ((char *) &tmp0)[3]; - ((char *) &tmp1)[1] = ((char *) &tmp0)[2]; - ((char *) &tmp1)[2] = ((char *) &tmp0)[1]; - ((char *) &tmp1)[3] = ((char *) &tmp0)[0]; - val = tmp1; - } else { - val = ((uint32_t *)SubEvt_data(my))[idx]; - } - break; - case 2: - if (SubEvt_isSwapped(my)) { - uint16_t v; - swab(((uint16_t *)SubEvt_data(my)) + idx, &v, 2); - val = v; - } else { - val = ((uint16_t *)SubEvt_data(my))[idx]; - } - break; - default: - val = ((uint8_t *)SubEvt_data(my))[idx]; - break; - } - return val; -} - -uint32_t SubEvt_id(const void *my) -{ - return SubEvt_hdrValue(my, SubEvtIdx_id); -} - -uint32_t SubEvt_pureId(const void *my) -{ - return SubEvt_hdrValue(my, SubEvtIdx_id) & 0x7fffffffU; -} - -int SubEvt_dataError(const void *my) -{ - return (SubEvt_hdrValue(my, SubEvtIdx_id) & 0x80000000) != 0; -} - -void SubEvt_setId(void *my, uint32_t id) -{ - SubEvt_setHdrValue(my, SubEvtIdx_id, id); -} - -uint32_t SubEvt_trigNr(const void *my) -{ - return SubEvt_hdrValue(my, SubEvtIdx_trigNr); -} - -void SubEvt_setTrigNr(void *my, uint32_t trigNr) -{ - SubEvt_setHdrValue(my, SubEvtIdx_trigNr, trigNr); + uint32_t val; + + switch (SubEvt_alignment(my)) { + case 4: + if (SubEvt_isSwapped(my)) { + uint32_t tmp0; + uint32_t tmp1; + + tmp0 = ((uint32_t *)SubEvt_data(my))[idx]; + ((char *) &tmp1)[0] = ((char *) &tmp0)[3]; + ((char *) &tmp1)[1] = ((char *) &tmp0)[2]; + ((char *) &tmp1)[2] = ((char *) &tmp0)[1]; + ((char *) &tmp1)[3] = ((char *) &tmp0)[0]; + val = tmp1; + } else { + val = ((uint32_t *)SubEvt_data(my))[idx]; + } + break; + case 2: + if (SubEvt_isSwapped(my)) { + uint16_t v; + swab(((uint16_t *)SubEvt_data(my)) + idx, &v, 2); + val = v; + } else { + val = ((uint16_t *)SubEvt_data(my))[idx]; + } + break; + default: + val = ((uint8_t *)SubEvt_data(my))[idx]; + break; + } + return val; } char *SubEvt_2charP(const void *my) { - static char buf[132]; + static char buf[132]; - sprintf(buf, "size: 0x%08x\tdecoding: 0x%08x\tid: 0x%08x\ttrigNr: 0x%08x", - SubEvt_size(my), SubEvt_decoding(my), SubEvt_id(my), SubEvt_trigNr(my)); + sprintf(buf, "size: 0x%08x\tdecoding: 0x%08x\tid: 0x%08x\ttrigNr: 0x%08x", + SubEvt_size(my), SubEvt_decoding(my), SubEvt_id(my), SubEvt_trigNr(my)); - return buf; + return buf; } void *newSubEvt(uint32_t decoding, uint32_t id, uint32_t trigNr) { - void *my; + void *my; - my = malloc(SubEvt_hdrSize()); + my = malloc(SubEvt_hdrSize()); - SubEvt_setSize(my, SubEvt_hdrSize()); - SubEvt_setDecoding(my, decoding); - SubEvt_setId(my, id); - SubEvt_setTrigNr(my, trigNr); + SubEvt_setSize(my, SubEvt_hdrSize()); + SubEvt_setDecoding(my, decoding); + SubEvt_setId(my, id); + SubEvt_setTrigNr(my, trigNr); - return my; + return my; } void deleteSubEvt(void *my) { - free(my); + free(my); } void *SubEvt_appendData(void *my, const void *data, size_t size) { - my = realloc(my, SubEvt_paddedSize(my) + size); - memcpy(SubEvt_end(my), data, size); - SubEvt_setSize(my, SubEvt_paddedSize(my) + size); + my = realloc(my, SubEvt_paddedSize(my) + size); + memcpy(SubEvt_end(my), data, size); + SubEvt_setSize(my, SubEvt_paddedSize(my) + size); - return my; + return my; } diff --git a/hadaq/subevt.h b/hadaq/subevt.h index a0a46d5..bfd8edc 100644 --- a/hadaq/subevt.h +++ b/hadaq/subevt.h @@ -18,7 +18,7 @@ enum SubEvtId { SubEvtId_start = 10, SubEvtId_veto = 11, SubEvtId_richPed = 12, - SubEvtId_tofTest = 400, + SubEvtId_tofTest = 400, SubEvtId_trigCode = 500, SubEvtId_trigInfo = 501, SubEvtId_slowTest = 600 @@ -46,19 +46,68 @@ enum SubEvtDecoding { #define SubEvt_end HadTu_end #define SubEvt_next HadTu_next -size_t SubEvt_hdrLen(void); -size_t SubEvt_hdrSize(void); -size_t SubEvt_dataSize(const void *my); -void *SubEvt_data(const void *my); + +enum SubEvtIdx { + SubEvtIdx_size, + SubEvtIdx_decoding, + SubEvtIdx_id, + SubEvtIdx_trigNr, + SubEvtIdx_data +}; + +static size_t SubEvt_hdrLen(void) +{ + return SubEvtIdx_data; +} + +static size_t SubEvt_hdrSize(void) +{ + return SubEvt_hdrLen() * sizeof(uint32_t); +} + +static size_t SubEvt_dataSize(const void *my) +{ + return SubEvt_size(my) - SubEvt_hdrSize(); +} + +static void *SubEvt_data(const void *my) +{ + return (void *) ((char *) my + SubEvt_hdrSize()); +} + uint32_t SubEvt_dataValue(const void *my, unsigned idx); char *SubEvt_2charP(const void *my); -uint32_t SubEvt_id(const void *my); -uint32_t SubEvt_pureId(const void *my); -int SubEvt_dataError(const void *my); -void SubEvt_setId(void *my, uint32_t id); -uint32_t SubEvt_trigNr(const void *my); -void SubEvt_setTrigNr(void *my, uint32_t trigNr); + +static uint32_t SubEvt_id(const void *my) +{ + return SubEvt_hdrValue(my, SubEvtIdx_id); +} + +static uint32_t SubEvt_pureId(const void *my) +{ + return SubEvt_hdrValue(my, SubEvtIdx_id) & 0x7fffffffU; +} + +static int SubEvt_dataError(const void *my) +{ + return (SubEvt_hdrValue(my, SubEvtIdx_id) & 0x80000000) != 0; +} + +static void SubEvt_setId(void *my, uint32_t id) +{ + SubEvt_setHdrValue(my, SubEvtIdx_id, id); +} + +static uint32_t SubEvt_trigNr(const void *my) +{ + return SubEvt_hdrValue(my, SubEvtIdx_trigNr); +} + +static void SubEvt_setTrigNr(void *my, uint32_t trigNr) +{ + SubEvt_setHdrValue(my, SubEvtIdx_trigNr, trigNr); +} void *newSubEvt(uint32_t decoding, uint32_t id, uint32_t trigNr); void deleteSubEvt(void *my); -- 2.43.0