Skip to content

Commit fd994c5

Browse files
Merge branch 'F-Stack:dev' into dev
2 parents e12daec + 7201280 commit fd994c5

File tree

15 files changed

+107
-27
lines changed

15 files changed

+107
-27
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ for more details, see [nginx guide](https://github.com/F-Stack/f-stack/blob/mast
135135

136136
cd app/redis-6.2.6/deps/jemalloc
137137
./autogen.sh
138-
cd app/redis-6.2.6/
138+
cd ../..
139139
make
140140
make install
141141

VERSION

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1.23

app/nginx-1.16.1/src/event/modules/ngx_ff_module.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,11 @@ kevent(int kq, const struct kevent *changelist, int nchanges,
545545
return ff_kevent(kq, changelist, nchanges, eventlist, nevents, timeout);
546546
}
547547

548+
/*
549+
* It is need to modify the definition, such as Ubuntu 22.04 or later.
550+
*
551+
* int(struct timeval * restrict, void * restrict)
552+
*/
548553
int
549554
gettimeofday(struct timeval *tv, struct timezone *tz)
550555
{

app/redis-6.2.6/src/anet_ff.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ socket(int domain, int type, int protocol)
160160
return real_socket(domain, type, protocol);
161161
}
162162

163-
if ((AF_INET != domain) || (SOCK_STREAM != type && SOCK_DGRAM != type)) {
163+
if ((AF_INET != domain && AF_INET6 != domain) || (SOCK_STREAM != type && SOCK_DGRAM != type)) {
164164
rc = real_socket(domain, type, protocol);
165165
return rc;
166166
}

config.ini

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ symmetric_rss=0
4040

4141
# PCI device enable list.
4242
# And driver options
43-
#pci_whitelist=02:00.0
43+
#allow=02:00.0
4444
# for multiple PCI devices
45-
#pci_whitelist=02:00.0,03:00.0
45+
#allow=02:00.0,03:00.0
4646

4747
# enabled port list
4848
#
@@ -161,7 +161,7 @@ gateway=192.168.1.1
161161
# FreeBSD network performance tuning configurations.
162162
# Most native FreeBSD configurations are supported.
163163
[freebsd.boot]
164-
# If use rack/bbr which depend HPTS, you should set a greater value of hz, such as 100000 means a tick is 10us.
164+
# If use rack/bbr which depend HPTS, you should set a greater value of hz, such as 1000000 means a tick is 1us.
165165
hz=100
166166

167167
# Block out a range of descriptors to avoid overlap
@@ -179,10 +179,6 @@ net.inet.tcp.tcbhashsize=65536
179179
kern.ncallout=262144
180180

181181
kern.features.inet6=1
182-
net.inet6.ip6.auto_linklocal=1
183-
net.inet6.ip6.accept_rtadv=2
184-
net.inet6.icmp6.rediraccept=1
185-
net.inet6.ip6.forwarding=0
186182

187183
[freebsd.sysctl]
188184
kern.ipc.somaxconn=32768
@@ -211,7 +207,16 @@ net.inet.udp.blackhole=1
211207
net.inet.ip.redirect=0
212208
net.inet.ip.forwarding=0
213209

210+
net.inet6.ip6.auto_linklocal=1
211+
net.inet6.ip6.accept_rtadv=2
212+
net.inet6.icmp6.rediraccept=1
213+
net.inet6.ip6.forwarding=0
214+
214215
# set default stacks:freebsd, rack or bbr, may be you need increase the value of parameter 'freebsd.boot.hz' while use rack or bbr.
215216
net.inet.tcp.functions_default=freebsd
216217
# need by bbr, should enable it.
217218
net.inet.tcp.hpts.skip_swi=1
219+
# Interval between calls to hpts_timeout_dir. default min 250us, max 256-512ms, default 512ms.
220+
net.inet.tcp.hpts.minsleep=250
221+
# [25600-51200]
222+
net.inet.tcp.hpts.maxsleep=51200

doc/F-Stack_Quick_Start_Guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ The mount point can be made permanent across reboots, by adding the following li
8888

8989
cd app/redis-6.2.6/deps/jemalloc
9090
./autogen.sh
91-
cd app/redis-6.2.6/
91+
cd ../..
9292
make
9393
# run with start.sh
9494
./start.sh -b ./redis-server -o /path/to/redis.conf

example/main.c

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <arpa/inet.h>
99
#include <errno.h>
1010
#include <assert.h>
11+
#include <sys/ioctl.h>
1112

1213
#include "ff_config.h"
1314
#include "ff_api.h"
@@ -25,7 +26,7 @@ int sockfd;
2526
int sockfd6;
2627
#endif
2728

28-
char html[] =
29+
char html[] =
2930
"HTTP/1.1 200 OK\r\n"
3031
"Server: F-Stack\r\n"
3132
"Date: Sat, 25 Feb 2017 09:26:33 GMT\r\n"
@@ -60,8 +61,14 @@ char html[] =
6061
int loop(void *arg)
6162
{
6263
/* Wait for events to happen */
63-
unsigned nevents = ff_kevent(kq, NULL, 0, events, MAX_EVENTS, NULL);
64-
unsigned i;
64+
int nevents = ff_kevent(kq, NULL, 0, events, MAX_EVENTS, NULL);
65+
int i;
66+
67+
if (nevents < 0) {
68+
printf("ff_kevent failed:%d, %s\n", errno,
69+
strerror(errno));
70+
return -1;
71+
}
6572

6673
for (i = 0; i < nevents; ++i) {
6774
struct kevent event = events[i];
@@ -98,27 +105,41 @@ int loop(void *arg)
98105
} while (available);
99106
} else if (event.filter == EVFILT_READ) {
100107
char buf[256];
101-
size_t readlen = ff_read(clientfd, buf, sizeof(buf));
102-
103-
ff_write(clientfd, html, sizeof(html) - 1);
108+
ssize_t readlen = ff_read(clientfd, buf, sizeof(buf));
109+
ssize_t writelen = ff_write(clientfd, html, sizeof(html) - 1);
110+
if (writelen < 0){
111+
printf("ff_write failed:%d, %s\n", errno,
112+
strerror(errno));
113+
ff_close(clientfd);
114+
}
104115
} else {
105116
printf("unknown event: %8.8X\n", event.flags);
106117
}
107118
}
119+
120+
return 0;
108121
}
109122

110123
int main(int argc, char * argv[])
111124
{
112125
ff_init(argc, argv);
113126

114-
assert((kq = ff_kqueue()) > 0);
127+
kq = ff_kqueue();
128+
if (kq < 0) {
129+
printf("ff_kqueue failed, errno:%d, %s\n", errno, strerror(errno));
130+
exit(1);
131+
}
115132

116133
sockfd = ff_socket(AF_INET, SOCK_STREAM, 0);
117134
if (sockfd < 0) {
118135
printf("ff_socket failed, sockfd:%d, errno:%d, %s\n", sockfd, errno, strerror(errno));
119136
exit(1);
120137
}
121138

139+
/* Set non blocking */
140+
int on = 1;
141+
ff_ioctl(sockfd, FIONBIO, &on);
142+
122143
struct sockaddr_in my_addr;
123144
bzero(&my_addr, sizeof(my_addr));
124145
my_addr.sin_family = AF_INET;
@@ -167,7 +188,11 @@ int main(int argc, char * argv[])
167188
}
168189

169190
EV_SET(&kevSet, sockfd6, EVFILT_READ, EV_ADD, 0, MAX_EVENTS, NULL);
170-
ff_kevent(kq, &kevSet, 1, NULL, 0, NULL);
191+
ret = ff_kevent(kq, &kevSet, 1, NULL, 0, NULL);
192+
if (ret < 0) {
193+
printf("ff_kevent failed:%d, %s\n", errno, strerror(errno));
194+
exit(1);
195+
}
171196
#endif
172197

173198
ff_run(loop, NULL);

example/main_zc.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ int sockfd;
2525
int sockfd6;
2626
#endif
2727

28-
char html[] =
28+
char html[] =
2929
"HTTP/1.1 200 OK\r\n"
3030
"Server: F-Stack\r\n"
3131
"Date: Sat, 25 Feb 2017 09:26:33 GMT\r\n"
@@ -58,7 +58,7 @@ char html[] =
5858
"</html>";
5959

6060

61-
char html1[] =
61+
char html1[] =
6262
"HTTP/1.1 200 OK\r\n"
6363
"Server: F-Stack\r\n"
6464
"Date: Sat, 25 Feb 2017 09:26:33 GMT\r\n"
@@ -94,7 +94,7 @@ char html1[] =
9494
"</body>\r\n"
9595
"</html>";
9696

97-
char html2[] =
97+
char html2[] =
9898
"HTTP/1.1 200 OK\r\n"
9999
"Server: F-Stack\r\n"
100100
"Date: Sat, 25 Feb 2017 09:26:33 GMT\r\n"
@@ -195,7 +195,7 @@ int loop(void *arg)
195195
printf("ff_zc_mbuf_write failed, len:%d, errno:%d, %s\n", to_write_len, errno, strerror(errno));
196196
exit(1);
197197
}
198-
off += to_write_len;
198+
off += to_write_len;
199199
}
200200

201201
/* Or call ff_zc_mbuf_write one time */

freebsd/kern/kern_linker.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -771,7 +771,7 @@ linker_file_add_dependency(linker_file_t file, linker_file_t dep)
771771
file->deps[file->ndeps] = dep;
772772
file->ndeps++;
773773
KLD_DPF(FILE, ("linker_file_add_dependency:"
774-
" adding %s as dependency for %s\n",
774+
" adding %s as dependency for %s\n",
775775
dep->filename, file->filename));
776776
return (0);
777777
}
@@ -1862,7 +1862,11 @@ linker_hints_lookup(const char *path, int pathlen, const char *modname,
18621862
goto bad;
18631863
best = cp = NULL;
18641864
error = VOP_GETATTR(nd.ni_vp, &vattr, cred);
1865+
#ifdef FSTACK
1866+
if (error || vattr.va_size == 0)
1867+
#else
18651868
if (error)
1869+
#endif
18661870
goto bad;
18671871
/*
18681872
* XXX: we need to limit this number to some reasonable value

freebsd/netinet/in_mcast.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -760,7 +760,11 @@ imf_get_source(struct in_mfilter *imf, const struct sockaddr_in *psin,
760760
if (lims == NULL) {
761761
if (imf->imf_nsrc == in_mcast_maxsocksrc)
762762
return (ENOSPC);
763+
#ifdef FSTACK
764+
nims = malloc(sizeof(struct ip_msource), M_INMFILTER,
765+
#else
763766
nims = malloc(sizeof(struct in_msource), M_INMFILTER,
767+
#endif
764768
M_NOWAIT | M_ZERO);
765769
if (nims == NULL)
766770
return (ENOMEM);
@@ -791,7 +795,11 @@ imf_graft(struct in_mfilter *imf, const uint8_t st1,
791795
struct ip_msource *nims;
792796
struct in_msource *lims;
793797

798+
#ifdef FSTACK
799+
nims = malloc(sizeof(struct ip_msource), M_INMFILTER,
800+
#else
794801
nims = malloc(sizeof(struct in_msource), M_INMFILTER,
802+
#endif
795803
M_NOWAIT | M_ZERO);
796804
if (nims == NULL)
797805
return (NULL);

0 commit comments

Comments
 (0)