… | |
… | |
356 | start_thread (); |
356 | start_thread (); |
357 | } |
357 | } |
358 | |
358 | |
359 | void eio_submit (eio_req *req) |
359 | void eio_submit (eio_req *req) |
360 | { |
360 | { |
|
|
361 | req->pri += EIO_PRI_BIAS; |
|
|
362 | |
|
|
363 | if (req->pri < EIO_PRI_MIN + EIO_PRI_BIAS) req->pri = EIO_PRI_MIN + EIO_PRI_BIAS; |
|
|
364 | if (req->pri > EIO_PRI_MAX + EIO_PRI_BIAS) req->pri = EIO_PRI_MAX + EIO_PRI_BIAS; |
|
|
365 | |
361 | ++nreqs; |
366 | ++nreqs; |
362 | |
367 | |
363 | X_LOCK (reqlock); |
368 | X_LOCK (reqlock); |
364 | ++nready; |
369 | ++nready; |
365 | reqq_push (&req_queue, req); |
370 | reqq_push (&req_queue, req); |
… | |
… | |
1049 | \ |
1054 | \ |
1050 | req = (eio_req *)calloc (1, sizeof *req); \ |
1055 | req = (eio_req *)calloc (1, sizeof *req); \ |
1051 | if (!req) \ |
1056 | if (!req) \ |
1052 | return 0; \ |
1057 | return 0; \ |
1053 | \ |
1058 | \ |
1054 | req->type = rtype; \ |
1059 | req->type = rtype; \ |
1055 | req->pri = EIO_DEFAULT_PRI + EIO_PRI_BIAS; \ |
1060 | req->pri = pri; \ |
1056 | req->finish = cb; \ |
1061 | req->finish = cb; \ |
|
|
1062 | req->data = data; \ |
1057 | req->destroy = eio_api_destroy; |
1063 | req->destroy = eio_api_destroy; |
1058 | |
1064 | |
1059 | #define SEND eio_submit (req); return req |
1065 | #define SEND eio_submit (req); return req |
1060 | |
1066 | |
1061 | #define PATH \ |
1067 | #define PATH \ |
… | |
… | |
1065 | { \ |
1071 | { \ |
1066 | eio_api_destroy (req); \ |
1072 | eio_api_destroy (req); \ |
1067 | return 0; \ |
1073 | return 0; \ |
1068 | } |
1074 | } |
1069 | |
1075 | |
|
|
1076 | #ifndef EIO_NO_WRAPPERS |
|
|
1077 | |
1070 | eio_req *eio_nop (int pri, eio_cb cb, void *data) |
1078 | eio_req *eio_nop (int pri, eio_cb cb, void *data) |
1071 | { |
1079 | { |
1072 | REQ (EIO_NOP); SEND; |
1080 | REQ (EIO_NOP); SEND; |
1073 | } |
1081 | } |
1074 | |
1082 | |
… | |
… | |
1247 | eio_req *eio_rename (const char *path, const char *new_path, int pri, eio_cb cb, void *data) |
1255 | eio_req *eio_rename (const char *path, const char *new_path, int pri, eio_cb cb, void *data) |
1248 | { |
1256 | { |
1249 | return eio__2path (EIO_RENAME, path, new_path, pri, cb, data); |
1257 | return eio__2path (EIO_RENAME, path, new_path, pri, cb, data); |
1250 | } |
1258 | } |
1251 | |
1259 | |
|
|
1260 | #endif |
|
|
1261 | |
1252 | eio_req *eio_grp (eio_cb cb, void *data) |
1262 | eio_req *eio_grp (eio_cb cb, void *data) |
1253 | { |
1263 | { |
1254 | const int pri = EIO_PRI_MAX; |
1264 | const int pri = EIO_PRI_MAX; |
1255 | |
1265 | |
1256 | REQ (EIO_GROUP); SEND; |
1266 | REQ (EIO_GROUP); SEND; |