summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryangwei <[email protected]>2024-04-01 19:23:00 +0800
committeryangwei <[email protected]>2024-04-01 19:23:00 +0800
commit244dd655680aa1dbba160e009f191e7dff655abc (patch)
tree5a3b9718925a3f6b2af71851668a9bf0ec0a4800
parent134ca507624c3ddf5163f002f1eee1473ee2b228 (diff)
🎈 perf(session_get0_current_packet): inline & unlikelyv1.0.18
-rw-r--r--include/stellar/utils.h8
-rw-r--r--src/adapter/adapter.c9
2 files changed, 12 insertions, 5 deletions
diff --git a/include/stellar/utils.h b/include/stellar/utils.h
index eb5e705..8158916 100644
--- a/include/stellar/utils.h
+++ b/include/stellar/utils.h
@@ -33,3 +33,11 @@
#ifndef __unused
#define __unused __attribute__((__unused__))
#endif
+
+#ifndef likely
+#define likely(x) __builtin_expect((x),1)
+#endif /* likely */
+
+#ifndef unlikely
+#define unlikely(x) __builtin_expect((x),0)
+#endif /* unlikely */
diff --git a/src/adapter/adapter.c b/src/adapter/adapter.c
index ee7d9aa..6a400b6 100644
--- a/src/adapter/adapter.c
+++ b/src/adapter/adapter.c
@@ -317,10 +317,9 @@ void adapter_session_free(struct session *sess)
unsigned char adapter_session_state_update(struct streaminfo *stream, struct session *sess, void *a_packet, enum session_state state)
{
struct packet *pkt = NULL;
- if(sess)
+ if(likely(sess!=NULL))
{
pkt=(struct packet *)session_get0_current_packet(sess);
- pkt->raw_pkt=(void *)get_current_rawpkt_from_streaminfo(stream);
session_dispatch( sess, state, pkt);
return APP_STATE_GIVEME;
}
@@ -378,10 +377,10 @@ const char *session_get0_current_payload(struct session *sess, size_t *payload_l
}
#include <assert.h>
-const struct packet *session_get0_current_packet(struct session *sess)
+inline const struct packet *session_get0_current_packet(struct session *sess)
{
- if(sess->cur_pkt == NULL || sess->cur_pkt->a_stream == NULL)return NULL;
- sess->cur_pkt->raw_pkt=(void *)get_current_rawpkt_from_streaminfo(sess->cur_pkt->a_stream);
+ if(unlikely(sess->cur_pkt == NULL) || unlikely(sess->cur_pkt->a_stream == NULL))return NULL;
+ if(unlikely(sess->cur_pkt->raw_pkt==NULL))sess->cur_pkt->raw_pkt=(void *)get_current_rawpkt_from_streaminfo(sess->cur_pkt->a_stream);
return sess->cur_pkt;
}