1/*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#include "ueventd_firmware_handler.h"
17
18#include <errno.h>
19#include <fcntl.h>
20#include <unistd.h>
21#include <limits.h>
22#include "ueventd.h"
23#define INIT_LOG_TAG "ueventd"
24#include "init_log.h"
25#include "securec.h"
26
27void HandleFimwareDeviceEvent(const struct Uevent *uevent)
28{
29    char fwLoadingPath[PATH_MAX] = {};
30
31    if (snprintf_s(fwLoadingPath, PATH_MAX, PATH_MAX - 1, "/sys%s/loading", uevent->syspath) == -1) {
32        INIT_LOGE("Failed to build firmware loading path");
33        return;
34    }
35    char realPath[PATH_MAX] = { 0 };
36    realpath(fwLoadingPath, realPath);
37    int fd = open(realPath, O_WRONLY | O_CLOEXEC);
38    if (fd < 0) {
39        INIT_LOGE("Failed to open %s, err = %d", fwLoadingPath, errno);
40        return;
41    }
42
43    char *endCode = "-1";
44    (void)write(fd, "-1", strlen(endCode));
45    close(fd);
46}
47