]>
Commit | Line | Data |
---|---|---|
6d533105 VI |
1 | /* |
2 | * hl_unlink.c -- provide _unlink(). | |
3 | * | |
4 | * Copyright (c) 2024 Synopsys Inc. | |
5 | * | |
6 | * The authors hereby grant permission to use, copy, modify, distribute, | |
7 | * and license this software and its documentation for any purpose, provided | |
8 | * that existing copyright notices are retained in all copies and that this | |
9 | * notice is included verbatim in any distributions. No written agreement, | |
10 | * license, or royalty fee is required for any of the authorized uses. | |
11 | * Modifications to this software may be copyrighted by their authors | |
12 | * and need not follow the licensing terms described here, provided that | |
13 | * the new terms are clearly indicated on the first page of each file where | |
14 | * they apply. | |
15 | * | |
16 | */ | |
17 | ||
18 | #include <errno.h> | |
19 | #include <stdint.h> | |
20 | #include <unistd.h> | |
21 | ||
22 | #include "hl_toolchain.h" | |
23 | #include "hl_api.h" | |
24 | ||
25 | ||
26 | /* Unlink host file. Implements HL_SYSCALL_UNLINK. */ | |
27 | static __always_inline int | |
28 | _hl_unlink (const char *path) | |
29 | { | |
30 | int32_t ret; | |
31 | uint32_t host_errno; | |
32 | volatile __uncached char *p; | |
33 | ||
34 | p = _hl_message (HL_SYSCALL_UNLINK, "s:ii", | |
35 | path, /* s */ | |
36 | (uint32_t *) &ret, /* :i */ | |
37 | (uint32_t *) &host_errno /* :i */); | |
38 | ||
39 | if (p == NULL) | |
40 | { | |
41 | errno = ETIMEDOUT; | |
42 | ret = -1; | |
43 | } | |
44 | else if (ret < 0) | |
45 | { | |
46 | errno = host_errno; | |
47 | ret = -1; | |
48 | } | |
49 | ||
50 | _hl_delete (); | |
51 | ||
52 | return ret; | |
53 | } | |
54 | ||
55 | int | |
56 | _unlink (const char *path) | |
57 | { | |
58 | return _hl_unlink (path); | |
59 | } |