diff --git a/src/misc/lock_file.c b/src/misc/lock_file.c
new file mode 100644
index 00000000..5f73fc02
--- /dev/null
+++ b/src/misc/lock_file.c
@@ -0,0 +1,84 @@
+///////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT NOTICE
+//
+// The following open source license statement does not apply to any
+// entity in the Exception List published by FMSoft.
+//
+// For more information, please visit:
+//
+// https://www.fmsoft.cn/exception-list
+//
+//////////////////////////////////////////////////////////////////////////////
+/*
+ * This file is part of MiniGUI, a mature cross-platform windowing
+ * and Graphics User Interface (GUI) support system for embedded systems
+ * and smart IoT devices.
+ *
+ * Copyright (C) 2023, Beijing FMSoft Technologies Co., Ltd.
+ *
+ * This program 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, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 .
+ *
+ * Or,
+ *
+ * As this program is a library, any link to this program must follow
+ * GNU General Public License version 3 (GPLv3). If you cannot accept
+ * GPLv3, you need to be licensed from FMSoft.
+ *
+ * If you have got a commercial license of this program, please use it
+ * under the terms and conditions of the commercial license.
+ *
+ * For more information about the commercial license, please refer to
+ * .
+ */
+/*
+** lock_file.c: This file include functions for locking/unlocking a file.
+**
+** Create date: 2023/09/10
+**
+** Current maintainer: Wei Yongming.
+*/
+
+#include "common.h"
+
+#ifndef __NOUNIX__
+
+#include "misc.h"
+
+#include
+#include
+#include
+#include
+
+void __mg_lock_file_for_read(int fd)
+{
+ while (flock(fd, LOCK_SH) == -1 && errno == EINTR);
+}
+
+void __mg_unlock_file_for_read(int fd)
+{
+ flock(fd, LOCK_UN);
+}
+
+void __mg_lock_file_for_write(int fd)
+{
+ while (flock(fd, LOCK_EX) == -1 && errno == EINTR);
+}
+
+void __mg_unlock_file_for_write(int fd)
+{
+ flock(fd, LOCK_UN);
+}
+
+#endif /* __NOUNIX__ */