mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-12 23:37:16 +03:00
4fb38f574a
Neither freeing slabs nor purging the cache are safe to call from interrupts, so instead we schedule these to run on NetSurf's process. If NetSurf is busy, there may be significant delay, so the priority is set low to ensure this is called only when other - faster - memory handlers have been exhausted. I don't know if this works, or is sane, as I'm not entirely sure how to test it. Something similar needs adding for OS4 but low memory is less of an issue there, so will see if this works on OS3 first.
59 lines
1.6 KiB
C
Executable File
59 lines
1.6 KiB
C
Executable File
/*
|
|
* Copyright 2008-2014 Chris Young <chris@unsatisfactorysoftware.co.uk>
|
|
*
|
|
* This file is part of NetSurf, http://www.netsurf-browser.org/
|
|
*
|
|
* NetSurf is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; version 2 of the License.
|
|
*
|
|
* NetSurf is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef AMIGA_SCHEDULE_H
|
|
#define AMIGA_SCHEDULE_H
|
|
#include "amiga/os3support.h"
|
|
#include "utils/errors.h"
|
|
|
|
/**
|
|
* Schedule a callback.
|
|
*
|
|
* \param t interval before the callback should be made / ms
|
|
* \param callback callback function
|
|
* \param p user parameter, passed to callback function
|
|
* \return NSERROR_OK on sucess or appropriate error on faliure
|
|
*
|
|
* The callback function will be called as soon as possible after t ms have
|
|
* passed.
|
|
*/
|
|
nserror ami_schedule(int t, void (*callback)(void *p), void *p);
|
|
|
|
/**
|
|
* Handle a message received from the scheduler process.
|
|
*
|
|
* \param nsmsgport Message port to process.
|
|
*/
|
|
void ami_schedule_handle(struct MsgPort *nsmsgport);
|
|
|
|
/**
|
|
* Initialise amiga scheduler
|
|
*
|
|
* \param msgport opened message port
|
|
*
|
|
* \return error.
|
|
*/
|
|
nserror ami_schedule_create(struct MsgPort *msgport);
|
|
|
|
/**
|
|
* Finalise amiga scheduler
|
|
*/
|
|
void ami_schedule_free(void);
|
|
#endif
|
|
|