syslog: use & instead of % when calculate offset
Signed-off-by: ligd <liguiding1@xiaomi.com>
This commit is contained in:
parent
61cb79d192
commit
b6e0614be6
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#include <nuttx/config.h>
|
#include <nuttx/config.h>
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -45,8 +46,11 @@
|
|||||||
|
|
||||||
#define SYSLOG_RPMSG_WORK_DELAY MSEC2TICK(CONFIG_SYSLOG_RPMSG_WORK_DELAY)
|
#define SYSLOG_RPMSG_WORK_DELAY MSEC2TICK(CONFIG_SYSLOG_RPMSG_WORK_DELAY)
|
||||||
|
|
||||||
#define SYSLOG_RPMSG_COUNT(p) ((p)->head - (p)->tail)
|
#define SYSLOG_RPMSG_COUNT(p) ((p)->head - (p)->tail)
|
||||||
#define SYSLOG_RPMSG_SPACE(p) ((p)->size - 1 - SYSLOG_RPMSG_COUNT(p))
|
#define SYSLOG_RPMSG_SPACE(p) ((p)->size - 1 - SYSLOG_RPMSG_COUNT(p))
|
||||||
|
#define SYSLOG_RPMSG_HEADOFF(p) ((p)->head & ((p)->size -1))
|
||||||
|
#define SYSLOG_RPMSG_TAILOFF(p) ((p)->tail & ((p)->size -1))
|
||||||
|
#define SYSLOG_RPMSG_FLUSHOFF(p) ((p)->flush & ((p)->size -1))
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Types
|
* Private Types
|
||||||
@ -122,7 +126,7 @@ static void syslog_rpmsg_work(FAR void *priv_)
|
|||||||
|
|
||||||
space -= sizeof(*msg);
|
space -= sizeof(*msg);
|
||||||
len = SYSLOG_RPMSG_COUNT(priv);
|
len = SYSLOG_RPMSG_COUNT(priv);
|
||||||
off = priv->tail % priv->size;
|
off = SYSLOG_RPMSG_TAILOFF(priv);
|
||||||
len_end = priv->size - off;
|
len_end = priv->size - off;
|
||||||
|
|
||||||
if (len > space)
|
if (len > space)
|
||||||
@ -171,7 +175,7 @@ static void syslog_rpmsg_putchar(FAR struct syslog_rpmsg_s *priv, int ch,
|
|||||||
{
|
{
|
||||||
/* Overwrite */
|
/* Overwrite */
|
||||||
|
|
||||||
priv->buffer[priv->tail % priv->size] = 0;
|
priv->buffer[SYSLOG_RPMSG_TAILOFF(priv)] = 0;
|
||||||
priv->tail += 1;
|
priv->tail += 1;
|
||||||
|
|
||||||
if (priv->transfer)
|
if (priv->transfer)
|
||||||
@ -188,7 +192,7 @@ static void syslog_rpmsg_putchar(FAR struct syslog_rpmsg_s *priv, int ch,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
priv->buffer[priv->head % priv->size] = ch & 0xff;
|
priv->buffer[SYSLOG_RPMSG_HEADOFF(priv)] = ch & 0xff;
|
||||||
priv->head = next;
|
priv->head = next;
|
||||||
|
|
||||||
if (last && !priv->suspend && !priv->transfer &&
|
if (last && !priv->suspend && !priv->transfer &&
|
||||||
@ -271,7 +275,7 @@ static int syslog_rpmsg_ept_cb(FAR struct rpmsg_endpoint *ept,
|
|||||||
|
|
||||||
if (priv->trans_len > 0)
|
if (priv->trans_len > 0)
|
||||||
{
|
{
|
||||||
off = priv->tail % priv->size;
|
off = SYSLOG_RPMSG_TAILOFF(priv);
|
||||||
len_end = priv->size - off;
|
len_end = priv->size - off;
|
||||||
|
|
||||||
if (priv->trans_len > len_end)
|
if (priv->trans_len > len_end)
|
||||||
@ -337,7 +341,8 @@ int syslog_rpmsg_flush(FAR struct syslog_channel_s *channel)
|
|||||||
|
|
||||||
while (priv->flush < priv->head)
|
while (priv->flush < priv->head)
|
||||||
{
|
{
|
||||||
up_putc(priv->buffer[priv->flush++ % priv->size]);
|
up_putc(priv->buffer[SYSLOG_RPMSG_FLUSHOFF(priv)]);
|
||||||
|
priv->flush++;
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(flags);
|
leave_critical_section(flags);
|
||||||
@ -371,6 +376,8 @@ void syslog_rpmsg_init_early(FAR void *buffer, size_t size)
|
|||||||
char cur;
|
char cur;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
|
DEBUGASSERT((size & (size - 1)) == 0);
|
||||||
|
|
||||||
nxsem_init(&priv->sem, 0, 0);
|
nxsem_init(&priv->sem, 0, 0);
|
||||||
nxsem_set_protocol(&priv->sem, SEM_PRIO_NONE);
|
nxsem_set_protocol(&priv->sem, SEM_PRIO_NONE);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user