debug.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074
  1. /****************************************************************************
  2. * include/debug.h
  3. *
  4. * Licensed to the Apache Software Foundation (ASF) under one or more
  5. * contributor license agreements. See the NOTICE file distributed with
  6. * this work for additional information regarding copyright ownership. The
  7. * ASF licenses this file to you under the Apache License, Version 2.0 (the
  8. * "License"); you may not use this file except in compliance with the
  9. * License. You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing, software
  14. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  15. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  16. * License for the specific language governing permissions and limitations
  17. * under the License.
  18. *
  19. ****************************************************************************/
  20. #ifndef __INCLUDE_DEBUG_H
  21. #define __INCLUDE_DEBUG_H
  22. /****************************************************************************
  23. * Included Files
  24. ****************************************************************************/
  25. #include <nuttx/config.h>
  26. #include <nuttx/compiler.h>
  27. #ifdef CONFIG_ARCH_DEBUG_H
  28. # include <arch/debug.h>
  29. #endif
  30. #ifdef CONFIG_ARCH_CHIP_DEBUG_H
  31. # include <arch/chip/debug.h>
  32. #endif
  33. #include <syslog.h>
  34. #include <sys/uio.h>
  35. /****************************************************************************
  36. * Pre-processor Definitions
  37. ****************************************************************************/
  38. /* Debug macros to runtime filter the debug messages sent to the console. In
  39. * general, there are four forms of the debug macros:
  40. *
  41. * [a-z]info() -- Outputs messages to the console similar to printf() except
  42. * that the output is not buffered. Output is only generated if
  43. * CONFIG_DEBUG_INFO is defined. The info macros are intended for
  44. * verbose "informational" debug output. If you enable CONFIG_DEBUG_INFO,
  45. * then very chatty (and often annoying) output will be generated.
  46. *
  47. * The first character of the macro name indicates the system
  48. * (e.g., n=network, f=filesystm, etc.). If the first character is
  49. * missing (i.e., _info()), then it is common. The common _info() macro
  50. * is enabled simply with CONFIG_DEBUG_INFO. Subsystem debug requires an
  51. * additional configuration setting to enable it (e.g., CONFIG_DEBUG_NET
  52. * for the network, CONFIG_DEBUG_FS for the file system, etc).
  53. *
  54. * In general, error messages and output of importance use [a-z]err().
  55. * [a-z]err() is implementation dependent but usually uses file
  56. * descriptors. (that is a problem only because the interrupt task may
  57. * have redirected stdout). Therefore [a-z]err() should not be used in
  58. * interrupt handlers.
  59. *
  60. * [a-z]warn() -- Identical to [a-z]info() except that it also requires that
  61. * CONFIG_DEBUG_WARN be defined. This is intended for important exception
  62. * conditions that are potential errors (or perhaps real errors with non-
  63. * fatal consequences).
  64. *
  65. * [a-z]err() -- Identical to [a-z]info() except that it also requires that
  66. * CONFIG_DEBUG_ERROR be defined. This is intended for important
  67. * error-related information that you probably don't want to suppress
  68. * during general debugging.
  69. *
  70. * _alert() - is a special, high-priority, unconditional version that is
  71. * really intended only for crash error reporting.
  72. */
  73. #ifdef CONFIG_HAVE_FUNCTIONNAME
  74. # define EXTRA_FMT "%s: "
  75. # define EXTRA_ARG ,__FUNCTION__
  76. #else
  77. # define EXTRA_FMT
  78. # define EXTRA_ARG
  79. #endif
  80. /* Debug macros will differ depending upon if the toolchain supports
  81. * macros with a variable number of arguments or not.
  82. */
  83. #ifdef CONFIG_CPP_HAVE_VARARGS
  84. /* don't call syslog while performing the compiler's format check. */
  85. # define _none(format, ...) \
  86. do { if (0) syslog(LOG_ERR, format, ##__VA_ARGS__); } while (0)
  87. #else
  88. # define _none (void)
  89. #endif
  90. /* The actual logger function may be overridden in arch/debug.h if needed.
  91. * (Currently only if the pre-processor supports variadic macros)
  92. */
  93. #ifndef __arch_syslog
  94. # define __arch_syslog syslog
  95. #endif
  96. #if !defined(CONFIG_DEBUG_ALERT)
  97. # define _alert _none
  98. #elif defined(CONFIG_CPP_HAVE_VARARGS)
  99. # define _alert(format, ...) \
  100. __arch_syslog(LOG_EMERG, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
  101. #endif
  102. #if !defined(CONFIG_DEBUG_ERROR)
  103. # define _err _none
  104. #elif defined(CONFIG_CPP_HAVE_VARARGS)
  105. # define _err(format, ...) \
  106. __arch_syslog(LOG_ERR, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
  107. #endif
  108. #if !defined(CONFIG_DEBUG_WARN)
  109. # define _warn _none
  110. #elif defined(CONFIG_CPP_HAVE_VARARGS)
  111. # define _warn(format, ...) \
  112. __arch_syslog(LOG_WARNING, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
  113. #endif
  114. #if !defined(CONFIG_DEBUG_INFO)
  115. # define _info _none
  116. #elif defined(CONFIG_CPP_HAVE_VARARGS)
  117. # define _info(format, ...) \
  118. __arch_syslog(LOG_INFO, EXTRA_FMT format EXTRA_ARG, ##__VA_ARGS__)
  119. #endif
  120. /* Subsystem specific debug */
  121. #ifdef CONFIG_DEBUG_MM_ERROR
  122. # define merr _err
  123. #else
  124. # define merr _none
  125. #endif
  126. #ifdef CONFIG_DEBUG_MM_WARN
  127. # define mwarn _warn
  128. #else
  129. # define mwarn _none
  130. #endif
  131. #ifdef CONFIG_DEBUG_MM_INFO
  132. # define minfo _info
  133. #else
  134. # define minfo _none
  135. #endif
  136. #ifdef CONFIG_DEBUG_SCHED_ERROR
  137. # define serr _err
  138. #else
  139. # define serr _none
  140. #endif
  141. #ifdef CONFIG_DEBUG_SCHED_WARN
  142. # define swarn _warn
  143. #else
  144. # define swarn _none
  145. #endif
  146. #ifdef CONFIG_DEBUG_SCHED_INFO
  147. # define sinfo _info
  148. #else
  149. # define sinfo _none
  150. #endif
  151. #ifdef CONFIG_DEBUG_SYSCALL_ERROR
  152. # define svcerr _err
  153. #else
  154. # define svcerr _none
  155. #endif
  156. #ifdef CONFIG_DEBUG_SYSCALL_WARN
  157. # define svcwarn _warn
  158. #else
  159. # define svcwarn _none
  160. #endif
  161. #ifdef CONFIG_DEBUG_SYSCALL_INFO
  162. # define svcinfo _info
  163. #else
  164. # define svcinfo _none
  165. #endif
  166. #ifdef CONFIG_DEBUG_PAGING_ERROR
  167. # define pgerr _err
  168. #else
  169. # define pgerr _none
  170. #endif
  171. #ifdef CONFIG_DEBUG_PAGING_WARN
  172. # define pgwarn _warn
  173. #else
  174. # define pgwarn _none
  175. #endif
  176. #ifdef CONFIG_DEBUG_PAGING_INFO
  177. # define pginfo _info
  178. #else
  179. # define pginfo _none
  180. #endif
  181. #ifdef CONFIG_DEBUG_NET_ERROR
  182. # define nerr _err
  183. #else
  184. # define nerr _none
  185. #endif
  186. #ifdef CONFIG_DEBUG_NET_WARN
  187. # define nwarn _warn
  188. #else
  189. # define nwarn _none
  190. #endif
  191. #ifdef CONFIG_DEBUG_NET_INFO
  192. # define ninfo _info
  193. #else
  194. # define ninfo _none
  195. #endif
  196. #ifdef CONFIG_DEBUG_POWER_ERROR
  197. # define pwrerr _err
  198. #else
  199. # define pwrerr _none
  200. #endif
  201. #ifdef CONFIG_DEBUG_POWER_WARN
  202. # define pwrwarn _warn
  203. #else
  204. # define pwrwarn _none
  205. #endif
  206. #ifdef CONFIG_DEBUG_POWER_INFO
  207. # define pwrinfo _info
  208. #else
  209. # define pwrinfo _none
  210. #endif
  211. #ifdef CONFIG_DEBUG_WIRELESS_ERROR
  212. # define wlerr _err
  213. #else
  214. # define wlerr _none
  215. #endif
  216. #ifdef CONFIG_DEBUG_WIRELESS_WARN
  217. # define wlwarn _warn
  218. #else
  219. # define wlwarn _none
  220. #endif
  221. #ifdef CONFIG_DEBUG_WIRELESS_INFO
  222. # define wlinfo _info
  223. #else
  224. # define wlinfo _none
  225. #endif
  226. #ifdef CONFIG_DEBUG_FS_ERROR
  227. # define ferr _err
  228. #else
  229. # define ferr _none
  230. #endif
  231. #ifdef CONFIG_DEBUG_FS_WARN
  232. # define fwarn _warn
  233. #else
  234. # define fwarn _none
  235. #endif
  236. #ifdef CONFIG_DEBUG_FS_INFO
  237. # define finfo _info
  238. #else
  239. # define finfo _none
  240. #endif
  241. #ifdef CONFIG_DEBUG_CONTACTLESS_ERROR
  242. # define ctlserr _err
  243. #else
  244. # define ctlserr _none
  245. #endif
  246. #ifdef CONFIG_DEBUG_CONTACTLESS_WARN
  247. # define ctlswarn _warn
  248. #else
  249. # define ctlswarn _none
  250. #endif
  251. #ifdef CONFIG_DEBUG_CONTACTLESS_INFO
  252. # define ctlsinfo _info
  253. #else
  254. # define ctlsinfo _none
  255. #endif
  256. #ifdef CONFIG_DEBUG_CRYPTO_ERROR
  257. # define crypterr _err
  258. #else
  259. # define crypterr _none
  260. #endif
  261. #ifdef CONFIG_DEBUG_CRYPTO_WARN
  262. # define cryptwarn _warn
  263. #else
  264. # define cryptwarn _none
  265. #endif
  266. #ifdef CONFIG_DEBUG_CRYPTO_INFO
  267. # define cryptinfo _info
  268. #else
  269. # define cryptinfo _none
  270. #endif
  271. #ifdef CONFIG_DEBUG_INPUT_ERROR
  272. # define ierr _err
  273. #else
  274. # define ierr _none
  275. #endif
  276. #ifdef CONFIG_DEBUG_INPUT_WARN
  277. # define iwarn _warn
  278. #else
  279. # define iwarn _none
  280. #endif
  281. #ifdef CONFIG_DEBUG_INPUT_INFO
  282. # define iinfo _info
  283. #else
  284. # define iinfo _none
  285. #endif
  286. #ifdef CONFIG_DEBUG_ANALOG_ERROR
  287. # define aerr _err
  288. #else
  289. # define aerr _none
  290. #endif
  291. #ifdef CONFIG_DEBUG_ANALOG_WARN
  292. # define awarn _warn
  293. #else
  294. # define awarn _none
  295. #endif
  296. #ifdef CONFIG_DEBUG_ANALOG_INFO
  297. # define ainfo _info
  298. #else
  299. # define ainfo _none
  300. #endif
  301. #ifdef CONFIG_DEBUG_CAN_ERROR
  302. # define canerr _err
  303. #else
  304. # define canerr _none
  305. #endif
  306. #ifdef CONFIG_DEBUG_CAN_WARN
  307. # define canwarn _warn
  308. #else
  309. # define canwarn _none
  310. #endif
  311. #ifdef CONFIG_DEBUG_CAN_INFO
  312. # define caninfo _info
  313. #else
  314. # define caninfo _none
  315. #endif
  316. #ifdef CONFIG_DEBUG_GRAPHICS_ERROR
  317. # define gerr _err
  318. #else
  319. # define gerr _none
  320. #endif
  321. #ifdef CONFIG_DEBUG_GRAPHICS_WARN
  322. # define gwarn _warn
  323. #else
  324. # define gwarn _none
  325. #endif
  326. #ifdef CONFIG_DEBUG_GRAPHICS_INFO
  327. # define ginfo _info
  328. #else
  329. # define ginfo _none
  330. #endif
  331. #ifdef CONFIG_DEBUG_BINFMT_ERROR
  332. # define berr _err
  333. #else
  334. # define berr _none
  335. #endif
  336. #ifdef CONFIG_DEBUG_BINFMT_WARN
  337. # define bwarn _warn
  338. #else
  339. # define bwarn _none
  340. #endif
  341. #ifdef CONFIG_DEBUG_BINFMT_INFO
  342. # define binfo _info
  343. #else
  344. # define binfo _none
  345. #endif
  346. #ifdef CONFIG_DEBUG_LIB_ERROR
  347. # define lerr _err
  348. #else
  349. # define lerr _none
  350. #endif
  351. #ifdef CONFIG_DEBUG_LIB_WARN
  352. # define lwarn _warn
  353. #else
  354. # define lwarn _none
  355. #endif
  356. #ifdef CONFIG_DEBUG_LIB_INFO
  357. # define linfo _info
  358. #else
  359. # define linfo _none
  360. #endif
  361. #ifdef CONFIG_DEBUG_AUDIO_ERROR
  362. # define auderr _err
  363. #else
  364. # define auderr _none
  365. #endif
  366. #ifdef CONFIG_DEBUG_AUDIO_WARN
  367. # define audwarn _warn
  368. #else
  369. # define audwarn _none
  370. #endif
  371. #ifdef CONFIG_DEBUG_AUDIO_INFO
  372. # define audinfo _info
  373. #else
  374. # define audinfo _none
  375. #endif
  376. #ifdef CONFIG_DEBUG_DMA_ERROR
  377. # define dmaerr _err
  378. #else
  379. # define dmaerr _none
  380. #endif
  381. #ifdef CONFIG_DEBUG_DMA_WARN
  382. # define dmawarn _warn
  383. #else
  384. # define dmawarn _none
  385. #endif
  386. #ifdef CONFIG_DEBUG_DMA_INFO
  387. # define dmainfo _info
  388. #else
  389. # define dmainfo _none
  390. #endif
  391. #ifdef CONFIG_DEBUG_IRQ_ERROR
  392. # define irqerr _err
  393. #else
  394. # define irqerr _none
  395. #endif
  396. #ifdef CONFIG_DEBUG_IRQ_WARN
  397. # define irqwarn _warn
  398. #else
  399. # define irqwarn _none
  400. #endif
  401. #ifdef CONFIG_DEBUG_IRQ_INFO
  402. # define irqinfo _info
  403. #else
  404. # define irqinfo _none
  405. #endif
  406. #ifdef CONFIG_DEBUG_LCD_ERROR
  407. # define lcderr _err
  408. #else
  409. # define lcderr _none
  410. #endif
  411. #ifdef CONFIG_DEBUG_LCD_WARN
  412. # define lcdwarn _warn
  413. #else
  414. # define lcdwarn _none
  415. #endif
  416. #ifdef CONFIG_DEBUG_LCD_INFO
  417. # define lcdinfo _info
  418. #else
  419. # define lcdinfo _none
  420. #endif
  421. #ifdef CONFIG_DEBUG_LEDS_ERROR
  422. # define lederr _err
  423. #else
  424. # define lederr _none
  425. #endif
  426. #ifdef CONFIG_DEBUG_LEDS_WARN
  427. # define ledwarn _warn
  428. #else
  429. # define ledwarn _none
  430. #endif
  431. #ifdef CONFIG_DEBUG_LEDS_INFO
  432. # define ledinfo _info
  433. #else
  434. # define ledinfo _none
  435. #endif
  436. #ifdef CONFIG_DEBUG_GPIO_ERROR
  437. # define gpioerr _err
  438. #else
  439. # define gpioerr _none
  440. #endif
  441. #ifdef CONFIG_DEBUG_GPIO_WARN
  442. # define gpiowarn _warn
  443. #else
  444. # define gpiowarn _none
  445. #endif
  446. #ifdef CONFIG_DEBUG_GPIO_INFO
  447. # define gpioinfo _info
  448. #else
  449. # define gpioinfo _none
  450. #endif
  451. #ifdef CONFIG_DEBUG_I2C_ERROR
  452. # define i2cerr _err
  453. #else
  454. # define i2cerr _none
  455. #endif
  456. #ifdef CONFIG_DEBUG_I2C_WARN
  457. # define i2cwarn _warn
  458. #else
  459. # define i2cwarn _none
  460. #endif
  461. #ifdef CONFIG_DEBUG_I2C_INFO
  462. # define i2cinfo _info
  463. #else
  464. # define i2cinfo _none
  465. #endif
  466. #ifdef CONFIG_DEBUG_I2S_ERROR
  467. # define i2serr _err
  468. #else
  469. # define i2serr _none
  470. #endif
  471. #ifdef CONFIG_DEBUG_I2S_WARN
  472. # define i2swarn _warn
  473. #else
  474. # define i2swarn _none
  475. #endif
  476. #ifdef CONFIG_DEBUG_I2S_INFO
  477. # define i2sinfo _info
  478. #else
  479. # define i2sinfo _none
  480. #endif
  481. #ifdef CONFIG_DEBUG_PWM_ERROR
  482. # define pwmerr _err
  483. #else
  484. # define pwmerr _none
  485. #endif
  486. #ifdef CONFIG_DEBUG_PWM_WARN
  487. # define pwmwarn _warn
  488. #else
  489. # define pwmwarn _none
  490. #endif
  491. #ifdef CONFIG_DEBUG_PWM_INFO
  492. # define pwminfo _info
  493. #else
  494. # define pwminfo _none
  495. #endif
  496. #ifdef CONFIG_DEBUG_RC_ERROR
  497. # define rcerr _err
  498. #else
  499. # define rcerr _none
  500. #endif
  501. #ifdef CONFIG_DEBUG_RC_WARN
  502. # define rcwarn _warn
  503. #else
  504. # define rcwarn _none
  505. #endif
  506. #ifdef CONFIG_DEBUG_RC_INFO
  507. # define rcinfo _info
  508. #else
  509. # define rcinfo _none
  510. #endif
  511. #ifdef CONFIG_DEBUG_RTC_ERROR
  512. # define rtcerr _err
  513. #else
  514. # define rtcerr _none
  515. #endif
  516. #ifdef CONFIG_DEBUG_RTC_WARN
  517. # define rtcwarn _warn
  518. #else
  519. # define rtcwarn _none
  520. #endif
  521. #ifdef CONFIG_DEBUG_RTC_INFO
  522. # define rtcinfo _info
  523. #else
  524. # define rtcinfo _none
  525. #endif
  526. #ifdef CONFIG_DEBUG_MEMCARD_ERROR
  527. # define mcerr _err
  528. #else
  529. # define mcerr _none
  530. #endif
  531. #ifdef CONFIG_DEBUG_MEMCARD_WARN
  532. # define mcwarn _warn
  533. #else
  534. # define mcwarn _none
  535. #endif
  536. #ifdef CONFIG_DEBUG_MEMCARD_INFO
  537. # define mcinfo _info
  538. #else
  539. # define mcinfo _none
  540. #endif
  541. #ifdef CONFIG_DEBUG_SENSORS_ERROR
  542. # define snerr _err
  543. #else
  544. # define snerr _none
  545. #endif
  546. #ifdef CONFIG_DEBUG_SENSORS_WARN
  547. # define snwarn _warn
  548. #else
  549. # define snwarn _none
  550. #endif
  551. #ifdef CONFIG_DEBUG_SENSORS_INFO
  552. # define sninfo _info
  553. #else
  554. # define sninfo _none
  555. #endif
  556. #ifdef CONFIG_DEBUG_SPI_ERROR
  557. # define spierr _err
  558. #else
  559. # define spierr _none
  560. #endif
  561. #ifdef CONFIG_DEBUG_SPI_WARN
  562. # define spiwarn _warn
  563. #else
  564. # define spiwarn _none
  565. #endif
  566. #ifdef CONFIG_DEBUG_SPI_INFO
  567. # define spiinfo _info
  568. #else
  569. # define spiinfo _none
  570. #endif
  571. #ifdef CONFIG_DEBUG_TIMER_ERROR
  572. # define tmrerr _err
  573. #else
  574. # define tmrerr _none
  575. #endif
  576. #ifdef CONFIG_DEBUG_TIMER_WARN
  577. # define tmrwarn _warn
  578. #else
  579. # define tmrwarn _none
  580. #endif
  581. #ifdef CONFIG_DEBUG_TIMER_INFO
  582. # define tmrinfo _info
  583. #else
  584. # define tmrinfo _none
  585. #endif
  586. #ifdef CONFIG_DEBUG_USB_ERROR
  587. # define uerr _err
  588. #else
  589. # define uerr _none
  590. #endif
  591. #ifdef CONFIG_DEBUG_USB_WARN
  592. # define uwarn _warn
  593. #else
  594. # define uwarn _none
  595. #endif
  596. #ifdef CONFIG_DEBUG_USB_INFO
  597. # define uinfo _info
  598. #else
  599. # define uinfo _none
  600. #endif
  601. #ifdef CONFIG_DEBUG_WATCHDOG_ERROR
  602. # define wderr _err
  603. #else
  604. # define wderr _none
  605. #endif
  606. #ifdef CONFIG_DEBUG_WATCHDOG_WARN
  607. # define wdwarn _warn
  608. #else
  609. # define wdwarn _none
  610. #endif
  611. #ifdef CONFIG_DEBUG_WATCHDOG_INFO
  612. # define wdinfo _info
  613. #else
  614. # define wdinfo _none
  615. #endif
  616. #ifdef CONFIG_DEBUG_MOTOR_ERROR
  617. # define mtrerr _err
  618. #else
  619. # define mtrerr _none
  620. #endif
  621. #ifdef CONFIG_DEBUG_MOTOR_WARN
  622. # define mtrwarn _warn
  623. #else
  624. # define mtrwarn _none
  625. #endif
  626. #ifdef CONFIG_DEBUG_MOTOR_INFO
  627. # define mtrinfo _info
  628. #else
  629. # define mtrinfo _none
  630. #endif
  631. /* Buffer dumping macros do not depend on varargs */
  632. #ifdef CONFIG_DEBUG_ERROR
  633. # define errdumpbuffer(m,b,n) lib_dumpbuffer(m,b,n)
  634. # ifdef CONFIG_DEBUG_INFO
  635. # define infodumpbuffer(m,b,n) lib_dumpbuffer(m,b,n)
  636. # else
  637. # define infodumpbuffer(m,b,n)
  638. # endif
  639. #else
  640. # define errdumpbuffer(m,b,n)
  641. # define infodumpbuffer(m,b,n)
  642. # endif
  643. /* Subsystem specific debug */
  644. #ifdef CONFIG_DEBUG_MM
  645. # define merrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  646. # define minfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  647. #else
  648. # define merrdumpbuffer(m,b,n)
  649. # define minfodumpbuffer(m,b,n)
  650. #endif
  651. #ifdef CONFIG_DEBUG_SCHED
  652. # define serrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  653. # define sinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  654. #else
  655. # define serrdumpbuffer(m,b,n)
  656. # define sinfodumpbuffer(m,b,n)
  657. #endif
  658. #ifdef CONFIG_DEBUG_SYSCALL
  659. # define svcerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  660. # define svcinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  661. #else
  662. # define svcerrdumpbuffer(m,b,n)
  663. # define svcinfodumpbuffer(m,b,n)
  664. #endif
  665. #ifdef CONFIG_DEBUG_PAGING
  666. # define pgerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  667. # define pginfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  668. #else
  669. # define pgerrdumpbuffer(m,b,n)
  670. # define pginfodumpbuffer(m,b,n)
  671. #endif
  672. #ifdef CONFIG_DEBUG_NET
  673. # define nerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  674. # define ninfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  675. #else
  676. # define nerrdumpbuffer(m,b,n)
  677. # define ninfodumpbuffer(m,b,n)
  678. #endif
  679. #ifdef CONFIG_DEBUG_POWER
  680. # define pwrerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  681. # define pwrinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  682. #else
  683. # define pwrerrdumpbuffer(m,b,n)
  684. # define pwrinfodumpbuffer(m,b,n)
  685. #endif
  686. #ifdef CONFIG_DEBUG_WIRELESS
  687. # define wlerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  688. # define wlinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  689. #else
  690. # define wlerrdumpbuffer(m,b,n)
  691. # define wlinfodumpbuffer(m,b,n)
  692. #endif
  693. #ifdef CONFIG_DEBUG_FS
  694. # define ferrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  695. # define finfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  696. #else
  697. # define ferrdumpbuffer(m,b,n)
  698. # define finfodumpbuffer(m,b,n)
  699. #endif
  700. #ifdef CONFIG_DEBUG_CONTACTLESS
  701. # define ctlserrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  702. # define ctlinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  703. #else
  704. # define ctlserrferrdumpbuffer(m,b,n)
  705. # define ctlinfodumpbuffer(m,b,n)
  706. #endif
  707. #ifdef CONFIG_DEBUG_INPUT
  708. # define ierrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  709. # define iinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  710. #else
  711. # define ierrdumpbuffer(m,b,n)
  712. # define iinfodumpbuffer(m,b,n)
  713. #endif
  714. #ifdef CONFIG_DEBUG_ANALOG
  715. # define aerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  716. # define ainfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  717. #else
  718. # define aerrdumpbuffer(m,b,n)
  719. # define ainfodumpbuffer(m,b,n)
  720. #endif
  721. #ifdef CONFIG_DEBUG_CAN
  722. # define canerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  723. # define caninfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  724. #else
  725. # define canerrdumpbuffer(m,b,n)
  726. # define caninfodumpbuffer(m,b,n)
  727. #endif
  728. #ifdef CONFIG_DEBUG_GRAPHICS
  729. # define gerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  730. # define ginfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  731. #else
  732. # define gerrdumpbuffer(m,b,n)
  733. # define ginfodumpbuffer(m,b,n)
  734. #endif
  735. #ifdef CONFIG_DEBUG_BINFMT
  736. # define berrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  737. # define binfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  738. #else
  739. # define berrdumpbuffer(m,b,n)
  740. # define binfodumpbuffer(m,b,n)
  741. #endif
  742. #ifdef CONFIG_DEBUG_LIB
  743. # define lerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  744. # define linfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  745. #else
  746. # define lerrdumpbuffer(m,b,n)
  747. # define linfodumpbuffer(m,b,n)
  748. #endif
  749. #ifdef CONFIG_DEBUG_AUDIO
  750. # define auderrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  751. # define audinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  752. #else
  753. # define auderrdumpbuffer(m,b,n)
  754. # define audinfodumpbuffer(m,b,n)
  755. #endif
  756. #ifdef CONFIG_DEBUG_DMA
  757. # define dmaerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  758. # define dmainfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  759. #else
  760. # define dmaerrdumpbuffer(m,b,n)
  761. # define dmainfodumpbuffer(m,b,n)
  762. #endif
  763. #ifdef CONFIG_DEBUG_IRQ
  764. # define irqerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  765. # define irqinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  766. #else
  767. # define irqerrdumpbuffer(m,b,n)
  768. # define irqinfodumpbuffer(m,b,n)
  769. #endif
  770. #ifdef CONFIG_DEBUG_LCD
  771. # define lcderrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  772. # define lcdinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  773. #else
  774. # define lcderrdumpbuffer(m,b,n)
  775. # define lcdinfodumpbuffer(m,b,n)
  776. #endif
  777. #ifdef CONFIG_DEBUG_LEDS
  778. # define lederrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  779. # define ledinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  780. #else
  781. # define lederrdumpbuffer(m,b,n)
  782. # define ledinfodumpbuffer(m,b,n)
  783. #endif
  784. #ifdef CONFIG_DEBUG_GPIO
  785. # define gpioerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  786. # define gpioinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  787. #else
  788. # define gpioerrdumpbuffer(m,b,n)
  789. # define gpioinfodumpbuffer(m,b,n)
  790. #endif
  791. #ifdef CONFIG_DEBUG_I2C
  792. # define i2cerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  793. # define i2cinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  794. #else
  795. # define i2cerrdumpbuffer(m,b,n)
  796. # define i2cinfodumpbuffer(m,b,n)
  797. #endif
  798. #ifdef CONFIG_DEBUG_I2S
  799. # define i2serrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  800. # define i2sinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  801. #else
  802. # define i2serrdumpbuffer(m,b,n)
  803. # define i2sinfodumpbuffer(m,b,n)
  804. #endif
  805. #ifdef CONFIG_DEBUG_PWM
  806. # define pwmerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  807. # define pwminfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  808. #else
  809. # define pwmerrdumpbuffer(m,b,n)
  810. # define pwminfodumpbuffer(m,b,n)
  811. #endif
  812. #ifdef CONFIG_DEBUG_RTC
  813. # define rtcerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  814. # define rtcinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  815. #else
  816. # define rtcerrdumpbuffer(m,b,n)
  817. # define rtcinfodumpbuffer(m,b,n)
  818. #endif
  819. #ifdef CONFIG_DEBUG_MEMCARD
  820. # define mcerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  821. # define mcinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  822. #else
  823. # define mcerrdumpbuffer(m,b,n)
  824. # define mcinfodumpbuffer(m,b,n)
  825. #endif
  826. #ifdef CONFIG_DEBUG_SENSORS
  827. # define snerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  828. # define sninfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  829. #else
  830. # define snerrdumpbuffer(m,b,n)
  831. # define sninfodumpbuffer(m,b,n)
  832. #endif
  833. #ifdef CONFIG_DEBUG_SPI
  834. # define spierrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  835. # define spiinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  836. #else
  837. # define spierrdumpbuffer(m,b,n)
  838. # define spiinfodumpbuffer(m,b,n)
  839. #endif
  840. #ifdef CONFIG_DEBUG_TIMER
  841. # define tmrerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  842. # define tmrinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  843. #else
  844. # define tmrerrdumpbuffer(m,b,n)
  845. # define tmrinfodumpbuffer(m,b,n)
  846. #endif
  847. #ifdef CONFIG_DEBUG_USB
  848. # define uerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  849. # define uinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  850. #else
  851. # define uerrdumpbuffer(m,b,n)
  852. # define uinfodumpbuffer(m,b,n)
  853. #endif
  854. #ifdef CONFIG_DEBUG_WATCHDOG
  855. # define wderrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  856. # define wdinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  857. #else
  858. # define wderrdumpbuffer(m,b,n)
  859. # define wdinfodumpbuffer(m,b,n)
  860. #endif
  861. #ifdef CONFIG_DEBUG_MOTOR
  862. # define mtrerrdumpbuffer(m,b,n) errdumpbuffer(m,b,n)
  863. # define mtrinfodumpbuffer(m,b,n) infodumpbuffer(m,b,n)
  864. #else
  865. # define mtrerrdumpbuffer(m,b,n)
  866. # define mtrinfodumpbuffer(m,b,n)
  867. #endif
  868. /****************************************************************************
  869. * Public Function Prototypes
  870. ****************************************************************************/
  871. #if defined(__cplusplus)
  872. extern "C"
  873. {
  874. #endif
  875. /* Dump a buffer of data */
  876. void lib_dumpbuffer(FAR const char *msg, FAR const uint8_t *buffer,
  877. unsigned int buflen);
  878. /* Do a pretty buffer dump from multiple buffers. */
  879. void lib_dumpvbuffer(FAR const char *msg, FAR const struct iovec *iov,
  880. int iovcnt);
  881. /* The system logging interfaces are normally accessed via the macros
  882. * provided above. If the cross-compiler's C pre-processor supports a
  883. * variable number of macro arguments, then those macros below will map all
  884. * debug statements to the logging interfaces declared in syslog.h.
  885. *
  886. * If the cross-compiler's pre-processor does not support variable length
  887. * arguments, then these additional APIs will be built.
  888. */
  889. #ifndef CONFIG_CPP_HAVE_VARARGS
  890. #ifdef CONFIG_DEBUG_ALERT
  891. void _alert(const char *format, ...);
  892. #endif
  893. #ifdef CONFIG_DEBUG_ERROR
  894. void _err(const char *format, ...);
  895. #endif
  896. #ifdef CONFIG_DEBUG_WARN
  897. void _warn(const char *format, ...);
  898. #endif
  899. #ifdef CONFIG_DEBUG_INFO
  900. void _info(const char *format, ...);
  901. #endif
  902. #endif /* CONFIG_CPP_HAVE_VARARGS */
  903. #if defined(__cplusplus)
  904. }
  905. #endif
  906. #endif /* __INCLUDE_DEBUG_H */