Uploaded image for project: 'Embedded Software & Tools'
  1. Embedded Software & Tools
  2. EXT_EP-9268

ClockPSysTick_nortos can remove clock from queue before timeout expires

    XMLWordPrintable

Details

    • Bug
    • Status: Fixed
    • High
    • Resolution: Fixed
    • TI Device Drivers
    • TIDRIVERS-3424
    • Hide
      3.70.00
       3.80.00
      Show
      3.70.00  3.80.00
    • CORESDK_4_10_00
    • Hide
      The ClockP systick handler contains the following loop:

          /* check if the clock instance has expired */
          while ((ClockP_ctrl.list != NULL) && (ClockP_ctrl.list->timeout == ClockP_ctrl.count))

      { ClockP_Obj *temp = ClockP_ctrl.list->next; /* clock instance expired */ ClockP_ctrl.list->timeout = 0; /* call appropriate callback function */ (ClockP_ctrl.list->cbFxn)(ClockP_ctrl.list->cbArg); ClockP_ctrl.list = temp; }
      The callback function is called before the object is removed from the list (the object is the first in the list because the list is sorted by timeout, and its timeout has expired.)

      If the object's callback function calls ClockP_start(), and the object's timeout is less than all the remaining objects in the list, ClockP_start() puts the object at the head of the list (ClockP_ctrl.list = object). The handler then removes the object: ClockP_ctrl.list = temp.

      This affects CC32XX and MSP432E4 devices, nortos. (CC26XX and MSP432 use ClockPTimer_nortos).
      Show
      The ClockP systick handler contains the following loop:     /* check if the clock instance has expired */     while ((ClockP_ctrl.list != NULL) && (ClockP_ctrl.list->timeout == ClockP_ctrl.count)) { ClockP_Obj *temp = ClockP_ctrl.list->next; /* clock instance expired */ ClockP_ctrl.list->timeout = 0; /* call appropriate callback function */ (ClockP_ctrl.list->cbFxn)(ClockP_ctrl.list->cbArg); ClockP_ctrl.list = temp; } The callback function is called before the object is removed from the list (the object is the first in the list because the list is sorted by timeout, and its timeout has expired.) If the object's callback function calls ClockP_start(), and the object's timeout is less than all the remaining objects in the list, ClockP_start() puts the object at the head of the list (ClockP_ctrl.list = object). The handler then removes the object: ClockP_ctrl.list = temp. This affects CC32XX and MSP432E4 devices, nortos. (CC26XX and MSP432 use ClockPTimer_nortos).

    Description

      ClockPSysTick_nortos can remove clock from queue before timeout expires

      Attachments

        Activity

          People

            syncuser TI User
            syncuser TI User
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: