MCPcopy Create free account
hub / github.com/apache/nuttx / syslog_add_intbuffer

Function syslog_add_intbuffer

drivers/syslog/syslog_intbuffer.c:146–176  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

144 ****************************************************************************/
145
146void syslog_add_intbuffer(FAR const char *buffer, size_t buflen)
147{
148 irqstate_t flags;
149 size_t space;
150
151 /* Disable concurrent modification from interrupt handling logic */
152
153 flags = spin_lock_irqsave_notrace(&g_syslog_intbuffer.splock);
154
155 space = circbuf_space(&g_syslog_intbuffer.circ);
156
157 if (space >= buflen)
158 {
159 circbuf_write(&g_syslog_intbuffer.circ, buffer, buflen);
160 }
161 else if (buflen <= sizeof(g_syslog_intbuffer.buffer))
162 {
163 syslog_flush_internal(true, buflen - space);
164 circbuf_write(&g_syslog_intbuffer.circ, buffer, buflen);
165 }
166 else
167 {
168 syslog_flush_internal(true, sizeof(g_syslog_intbuffer.buffer));
169 space = buflen - sizeof(g_syslog_intbuffer.buffer);
170 syslog_write_foreach(buffer, space, true);
171 circbuf_write(&g_syslog_intbuffer.circ,
172 buffer + space, buflen - space);
173 }
174
175 spin_unlock_irqrestore_notrace(&g_syslog_intbuffer.splock, flags);
176}
177
178/****************************************************************************
179 * Name: syslog_flush_intbuffer

Callers 1

syslog_writeFunction · 0.85

Calls 5

circbuf_spaceFunction · 0.85
circbuf_writeFunction · 0.85
syslog_flush_internalFunction · 0.85
syslog_write_foreachFunction · 0.85

Tested by

no test coverage detected