Да, sys_close()
является точкой входа для закрытия всех файловых дескрипторов, включая сокеты.
sys_close()
вызывает filp_close()
, что вызывает fput()
для объекта struct file
. Когда последняя ссылка на struct file
установлена, fput()
вызывает метод .release()
объекта файла, который для сокетов является функцией sock_close()
в net/socket.c
.
Код сокета использует get_unused_fd()
и put_unused_fd()
для получения и выпуска файловых дескрипторов.