Revision aed3754b core/inc/aos_thread.h

View differences:

core/inc/aos_thread.h
99 99
extern "C" {
100 100
#endif
101 101
  void aosThdSleepUntilS(const aos_timestamp_t* t);
102
#if (CH_DBG_FILL_THREADS == TRUE)
103
  size_t aosThdGetStackPeakUtilization(thread_t* thread);
104
#endif
102 105
#ifdef __cplusplus
103 106
}
104 107
#endif
......
237 240
  return;
238 241
}
239 242

  
243
/**
244
 * @brief   Retrieve the stack size of a specific thread in bytes.
245
 *
246
 * @param[in] thread    Thread to retrieve the stack size from.
247
 *
248
 * @return  Absolute stack size in bytes.
249
 */
250
static inline size_t aosThdGetStacksize(thread_t* thread)
251
{
252
  aosDbgCheck(thread != NULL);
253

  
254
  /*
255
   * Working area is structured like:
256
   *    thread.wabase (LSB)->[ stack | port specific data | thread structure ]
257
   * See the following macros for details:
258
   *  - THD_WORKING_AREA
259
   *  - THD_WORKING_AREA_SIZE
260
   *  - PORT_WA_SIZE
261
   */
262
  return ((uintptr_t)(thread) - (uintptr_t)(thread->wabase)) -
263
         ((size_t)PORT_GUARD_PAGE_SIZE + sizeof(struct port_intctx) + sizeof(struct port_extctx) + (size_t)PORT_INT_REQUIRED_STACK);
264
}
265

  
240 266
#endif /* _AMIROOS_THREAD_H_ */
241 267

  
242 268
/** @} */

Also available in: Unified diff