int stp_dbg_dmp_out(MTKSTP_DBG_T *stp_dbg, char *buf, int *len) { unsigned long flags; int remaining = 0; *len = 0; spin_lock_irqsave(&(stp_dbg->logsys->lock), flags); if(stp_dbg->logsys->size > 0) { memcpy(buf, &(stp_dbg->logsys->queue[stp_dbg->logsys->out].buffer[0]), stp_dbg->logsys->queue[stp_dbg->logsys->out].len); (*len) = stp_dbg->logsys->queue[stp_dbg->logsys->out].len; stp_dbg->logsys->out = (stp_dbg->logsys->out >= (STP_DBG_LOG_ENTRY_NUM - 1))?(0):(stp_dbg->logsys->out + 1); stp_dbg->logsys->size--; STP_DBG_DBG_FUNC("logsys size = %d, out = %d\n", stp_dbg->logsys->size, stp_dbg->logsys->out); } else { STP_DBG_LOUD_FUNC("logsys EMPTY!\n"); } remaining = (stp_dbg->logsys->size == 0)?(0):(1); spin_unlock_irqrestore(&(stp_dbg->logsys->lock), flags); return remaining; }
INT32 stp_dbg_dmp_out (MTKSTP_DBG_T *stp_dbg, CHAR *buf, INT32 *len) { INT32 remaining = 0; osal_lock_unsleepable_lock(&(stp_dbg->logsys->lock)); if (stp_dbg->logsys->size > 0){ osal_memcmp(buf, &(stp_dbg->logsys->queue[stp_dbg->logsys->out].buffer[0]), stp_dbg->logsys->queue[stp_dbg->logsys->out].len); (*len) = stp_dbg->logsys->queue[stp_dbg->logsys->out].len; stp_dbg->logsys->out = (stp_dbg->logsys->out >= (STP_DBG_LOG_ENTRY_NUM - 1))?(0):(stp_dbg->logsys->out + 1); stp_dbg->logsys->size--; STP_DBG_DBG_FUNC("logsys size = %d, out = %d\n", stp_dbg->logsys->size, stp_dbg->logsys->out); } else { STP_DBG_LOUD_FUNC("logsys EMPTY!\n"); } remaining = (stp_dbg->logsys->size == 0)?(0):(1); osal_unlock_unsleepable_lock(&(stp_dbg->logsys->lock)); return remaining; }