<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def tasks(self, path, postmap=None, **params):
 """ Return the task status. This delves into the operating structures and picks out information about tasks that is useful for status monitoring. For each task, the response includes: control - The active task control value, whoich may have been changed via the management interface. count - The number of processes configured to run for the task. This does not necessarily correspond to the process list below if tasks are failing or the control is set to "off". processes - A list of the running processes for the task. Each entry may contain: pid - The process ID of the process currently running in this slot. If "pid" is not present, no process is running in the slot. started - The ISO8601 date stamp when the process started. started_t - The Unix time_t of when the process started. status - The exit code for the last time this process exited. exit - The status translated for human consumption. Not that the status and exit values are not cleared if the process has successfully restarted. Supports standard options. """

        q = httpd.merge_query(path, postmap)

        ans = {}
        for name, tinfo in self._legion._tasknames.items():
            t = tinfo[0]
            info = {}
            conf = t.get_config()
            if conf:
                info['control'] = t._get(conf.get('control'))
                info['count'] = t._get(conf.get('count'), default=1)
                info['processes'] = []
                for p in t._proc_state:
                    if p is None: continue
                    proc = {}
                    if p.pid is not None:
                        proc['pid'] = p.pid
                    if p.exit_code is not None:
                        proc['status'] = p.exit_code
                        proc['exit'] = utils.statusfmt(p.exit_code)
                    if p.started is not None:
                        proc['started_t'] = p.started
                        proc['started'] = utils.time2iso(p.started)
                    if p.exited is not None:
                        proc['exited_t'] = p.exited
                        proc['exited'] = utils.time2iso(p.exited)
                    if p.pending_sig is not None:                                               # pragma: no cover
                        proc['exit_pending'] = True
                    info['processes'].append(proc)
            ans[name] = info

        return self._format(ans, q)