Skip to content

Commit 843e74b

Browse files
chen-guanghuawinlinvip
authored andcommitted
Support st_destroy to free resources for asan.
1 parent 354df60 commit 843e74b

File tree

5 files changed

+39
-4
lines changed

5 files changed

+39
-4
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ The branch [srs](https://github.com/ossrs/state-threads/tree/srs) was patched an
118118
- [x] Define and use a new jmpbuf, because the structure is different.
119119
- [x] Check capability for backtrack.
120120
- [x] Support set specifics for any thread.
121+
- [x] Support st_destroy to free resources for asan.
121122
- [ ] System: Support sendmmsg for UDP, [#12](https://github.com/ossrs/state-threads/issues/12).
122123

123124
## GDB Tools

common.h

+1
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ typedef struct _st_eventsys_ops {
226226
int (*fd_new)(int); /* New descriptor allocated */
227227
int (*fd_close)(int); /* Descriptor closed */
228228
int (*fd_getlimit)(void); /* Descriptor hard limit */
229+
void (*destroy)(void); /* Destroy the event object */
229230
} _st_eventsys_t;
230231

231232

event.c

+27-4
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,11 @@ ST_HIDDEN int _st_select_fd_getlimit(void)
430430
return FD_SETSIZE;
431431
}
432432

433+
ST_HIDDEN void _st_select_destroy(void)
434+
{
435+
/* TODO: FIXME: Implements it */
436+
}
437+
433438
static _st_eventsys_t _st_select_eventsys = {
434439
"select",
435440
ST_EVENTSYS_SELECT,
@@ -439,7 +444,8 @@ static _st_eventsys_t _st_select_eventsys = {
439444
_st_select_pollset_del,
440445
_st_select_fd_new,
441446
_st_select_fd_close,
442-
_st_select_fd_getlimit
447+
_st_select_fd_getlimit,
448+
_st_select_destroy
443449
};
444450
#endif
445451

@@ -838,6 +844,11 @@ ST_HIDDEN int _st_kq_fd_getlimit(void)
838844
return 0;
839845
}
840846

847+
ST_HIDDEN void _st_kq_destroy(void)
848+
{
849+
/* TODO: FIXME: Implements it */
850+
}
851+
841852
static _st_eventsys_t _st_kq_eventsys = {
842853
"kqueue",
843854
ST_EVENTSYS_ALT,
@@ -847,7 +858,8 @@ static _st_eventsys_t _st_kq_eventsys = {
847858
_st_kq_pollset_del,
848859
_st_kq_fd_new,
849860
_st_kq_fd_close,
850-
_st_kq_fd_getlimit
861+
_st_kq_fd_getlimit,
862+
_st_kq_destroy
851863
};
852864
#endif /* MD_HAVE_KQUEUE */
853865

@@ -856,7 +868,6 @@ static _st_eventsys_t _st_kq_eventsys = {
856868
/*****************************************
857869
* epoll event system
858870
*/
859-
860871
ST_HIDDEN int _st_epoll_init(void)
861872
{
862873
int fdlim;
@@ -1193,6 +1204,17 @@ ST_HIDDEN int _st_epoll_is_supported(void)
11931204
return (errno != ENOSYS);
11941205
}
11951206

1207+
ST_HIDDEN void _st_epoll_destroy(void)
1208+
{
1209+
if (_st_epoll_data->epfd >= 0) {
1210+
close(_st_epoll_data->epfd);
1211+
}
1212+
free(_st_epoll_data->fd_data);
1213+
free(_st_epoll_data->evtlist);
1214+
free(_st_epoll_data);
1215+
_st_epoll_data = NULL;
1216+
}
1217+
11961218
static _st_eventsys_t _st_epoll_eventsys = {
11971219
"epoll",
11981220
ST_EVENTSYS_ALT,
@@ -1202,7 +1224,8 @@ static _st_eventsys_t _st_epoll_eventsys = {
12021224
_st_epoll_pollset_del,
12031225
_st_epoll_fd_new,
12041226
_st_epoll_fd_close,
1205-
_st_epoll_fd_getlimit
1227+
_st_epoll_fd_getlimit,
1228+
_st_epoll_destroy
12061229
};
12071230
#endif /* MD_HAVE_EPOLL */
12081231

public.h

+1
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ extern int st_sendmsg(st_netfd_t fd, const struct msghdr *msg, int flags, st_uti
156156

157157
extern st_netfd_t st_open(const char *path, int oflags, mode_t mode);
158158

159+
extern void st_destroy(void);
159160
extern int st_thread_setspecific2(st_thread_t thread, int key, void *value);
160161

161162
#ifdef DEBUG

sched.c

+9
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,15 @@ int st_init(void)
229229
}
230230

231231

232+
/*
233+
* Destroy this Virtual Processor
234+
*/
235+
void st_destroy(void)
236+
{
237+
(*_st_eventsys->destroy)();
238+
}
239+
240+
232241
#ifdef ST_SWITCH_CB
233242
st_switch_cb_t st_set_switch_in_cb(st_switch_cb_t cb)
234243
{

0 commit comments

Comments
 (0)