]> git.ipfire.org Git - thirdparty/glibc.git/blame - libio/iofread.c
syscalls.list support for vDSO IFUNCs, use it for x32 gettimeofday and time.
[thirdparty/glibc.git] / libio / iofread.c
CommitLineData
0261d33f
UD
1/* Copyright (C) 1993, 1995, 1997, 1998, 1999, 2002, 2003
2 Free Software Foundation, Inc.
41bdb6e2 3 This file is part of the GNU C Library.
96aa2d94 4
41bdb6e2
AJ
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
96aa2d94 9
41bdb6e2
AJ
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
40a55d20 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2
AJ
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>.
41bdb6e2
AJ
18
19 As a special exception, if you link the code in this file with
20 files compiled with a GNU compiler to produce an executable,
21 that does not cause the resulting executable to be covered by
22 the GNU Lesser General Public License. This exception does not
23 however invalidate any other reasons why the executable file
24 might be covered by the GNU Lesser General Public License.
25 This exception applies to code released by its copyright holders
26 in files containing the exception. */
96aa2d94
RM
27
28#include "libioP.h"
29
30_IO_size_t
31_IO_fread (buf, size, count, fp)
32 void *buf;
33 _IO_size_t size;
34 _IO_size_t count;
40a55d20 35 _IO_FILE *fp;
96aa2d94 36{
085320f5 37 _IO_size_t bytes_requested = size * count;
96aa2d94
RM
38 _IO_size_t bytes_read;
39 CHECK_FILE (fp, 0);
40 if (bytes_requested == 0)
41 return 0;
0261d33f 42 _IO_acquire_lock (fp);
77fe0b9c 43 bytes_read = INTUSE(_IO_sgetn) (fp, (char *) buf, bytes_requested);
0261d33f 44 _IO_release_lock (fp);
96aa2d94
RM
45 return bytes_requested == bytes_read ? count : bytes_read / size;
46}
77fe0b9c 47INTDEF(_IO_fread)
ca34d7a7
UD
48
49#ifdef weak_alias
96aa2d94 50weak_alias (_IO_fread, fread)
66f8fa9b
UD
51
52# ifndef _IO_MTSAFE_IO
53weak_alias (_IO_fread, fread_unlocked)
ffa8d2a0 54libc_hidden_ver (_IO_fread, fread_unlocked)
66f8fa9b 55# endif
ca34d7a7 56#endif